[英]Getting local group from mapped drives c#
我們正面臨從 c# 授予文件夾訪問映射路徑的問題。 我們有一個 map 驅動器,它使用代碼進行映射。 它工作正常,我們嘗試使用以下代碼提供訪問權限。
DirectorySecurity dirSec = Directory.GetAccessControl(clientFolder);
dirSec.AddAccessRule(new FileSystemAccessRule(@"Local group Name", FileSystemRights.Modify, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
添加 AddAccessRule 時出錯。
錯誤:
Some or all identity references could not be translated.
痕跡:
at System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean forceSuccess)
at System.Security.Principal.NTAccount.Translate(Type targetType)
at System.Security.AccessControl.CommonObjectSecurity.ModifyAccess(AccessControlModification modification, AccessRule rule, Boolean& modified)
at System.Security.AccessControl.CommonObjectSecurity.AddAccessRule(AccessRule rule)
注意:我們正在使用 AD 服務帳戶到 map NAS,我們正在嘗試從父計算機添加本地組。 AD 無法訪問此組,並且它是同一個域。
請給我任何想法,將本地服務帳戶的訪問權限授予 NAS。
我們手動將該組添加到一個文件夾,並將 IdentityReference.Value 存儲到一個變量中。 然后我們輕松獲得了 IdentityReference,使用它我們將程序添加到其他文件夾。 下面的代碼用於獲取 IdentityReference
public IdentityReference getReference(string NameOfDirectory)
{
DirectorySecurity dirSec = Directory.GetAccessControl(NameOfDirectory);
AuthorizationRuleCollection accessRules;
IdentityReference identity = null;
accessRules = dirSec.GetAccessRules(true, true, typeof(NTAccount));
foreach (FileSystemAccessRule rule in accessRules)
{
if (identity == null)
{
if (rule.IdentityReference.Value != null && rule.IdentityReference.Value.Equals(Constants.securityId))
{
dirSec.RemoveAccessRuleSpecific(rule);
identity = rule.IdentityReference;
break;
}
}
}
return identity;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.