C# “如何分配访问权限”;“每个人”;到目录
从我的C#小程序为windows上的目录文件夹“wwwroot”分配访问权限时遇到了一个问题。 我是这样做的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
//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->以管理员身份运行。有时,这可能会修复异常。答案是,这是完美的!谢谢现在所有的工作都很精细,代码看起来很可疑。如果您可以像这样复制代码,那么问题应该作为副本关闭。