更改文件的ACL以允许每个人的完全访问权限

Elm*_*lmo 1 .net c# vb.net pinvoke acl

如何将文件的所有者更改为Everyone并允许该Everyone对象Full Access

有没有可用的API?我必须使用P/Invoke吗?

我到处搜索,但找不到任何可以做到这一点.

Jul*_*iën 8

实际上,有API可用于此.您可能希望查看System.IO命名空间中的File.SetAccessControl方法.

// Read the current ACL details for the file
var fileSecurity = File.GetAccessControl(fileName);

// Create a new rule set, based on "Everyone"
var fileAccessRule = new FileSystemAccessRule(new NTAccount("", "Everyone"),
      FileSystemRights.FullControl, 
      AccessControlType.Allow);

// Append the new rule set to the file
fileSecurity.AddAccessRule(fileAccessRule);

// And persist it to the filesystem
File.SetAccessControl(fileName, fileSecurity);
Run Code Online (Sandbox Code Playgroud)

关于ACL,前面提到的文章有很多值得关注的事情.

  • 您应该使用`new SecurityIdentifier(WellKnownSidType.WorldSid,null)`而不是`new NTAccount(...)`,因为字符串"Everyone"`已经被本地化,结果是(在非英语操作系统上它是不同的!) (4认同)