Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “如何分配访问权限”;“每个人”;到目录_C#_.net_Security_Permissions_Windows Identity - Fatal编程技术网

C# “如何分配访问权限”;“每个人”;到目录

C# “如何分配访问权限”;“每个人”;到目录,c#,.net,security,permissions,windows-identity,C#,.net,Security,Permissions,Windows Identity,从我的C#小程序为windows上的目录文件夹“wwwroot”分配访问权限时遇到了一个问题。 我是这样做的 //I also try with 'S-1-1-0'/'Everyone' but it's the same result string userPermission = "Everyone" ; DirectoryInfo myDirRoot = new DirectoryInfo(myArmsUpdate.InstallationPath); DirectorySecuri

从我的C#小程序为windows上的目录文件夹“wwwroot”分配访问权限时遇到了一个问题。 我是这样做的

//I also try with 'S-1-1-0'/'Everyone' but it's the same result 
string userPermission = "Everyone"  ;

DirectoryInfo myDirRoot = new DirectoryInfo(myArmsUpdate.InstallationPath);
DirectorySecurity myDirectorySecurity = myDirRoot.GetAccessControl();
FileSystemAccessRule myPermission = new FileSystemAccessRule(userPermission , FileSystemRights.ReadAndExecute, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow);

myDirectorySecurity.AddAccessRule(myPermission);
myDirRoot.SetAccessControl(myDirectorySecurity);
但是,我仍然得到相同的错误:

System.Security.Principal.IdentityNotMappedException

试试下面的方法

DirectorySecurity sec = Directory.GetAccessControl(path);
        // Using this instead of the "Everyone" string means we work on non-English systems.
        SecurityIdentifier everyone = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
        sec.AddAccessRule(new FileSystemAccessRule(everyone, FileSystemRights.Modify | FileSystemRights.Synchronize, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
        Directory.SetAccessControl(path, sec);

注意:您必须是管理员才能执行此操作

尝试运行VS->以管理员身份运行。有时,这可能会修复异常。答案是,这是完美的!谢谢现在所有的工作都很精细,代码看起来很可疑。如果您可以像这样复制代码,那么问题应该作为副本关闭。