从映射驱动器获取本地组 c#
Getting local group from mapped drives c#
我们面临从 C# 中授予文件夹对映射路径的访问权限的问题。我们有一个地图驱动器,它是使用代码映射的。它工作正常,我们尝试使用以下代码授予访问权限。
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 服务帐户映射 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;
}
我们面临从 C# 中授予文件夹对映射路径的访问权限的问题。我们有一个地图驱动器,它是使用代码映射的。它工作正常,我们尝试使用以下代码授予访问权限。
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 服务帐户映射 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;
}