从映射驱动器中获取本地组 c#

问题描述 投票:0回答:1

我们正面临着从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。

c# directory active-directory nas
1个回答
0
投票

我们手动将组添加到一个文件夹中,并且我们将IdentityReference.Value存储到一个变量中。然后我们很容易就得到了IdentityReference.Value.然后我们用这个来添加程序到其他文件夹。下面的代码用于获取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;
        }
© www.soinside.com 2019 - 2024. All rights reserved.