2013-07-20 39 views
0

如何將文件所有者更改爲Everyone並允許Everyone對象Full Access更改文件的ACL以允許所有人都可以完全訪問

是否有任何API可用於此?我必須使用P/Invoke嗎?

我到處搜索,但找不到任何東西來做到這一點。

+0

你不能讓每個人都成爲一個對象的所有者 –

+0

@DavidHeffernan我相信你錯了。嘗試使用文件屬性中的安全選項卡手動設置所有者。它會讓你將所有者設置爲每個人都沒有任何問題。 – Elmo

回答

7

事實上,有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); 

前面提到的文章有很多很棒的東西可以玩,關於ACL。

+0

可以使用'fileSecurity.SetOwner'。 –

+2

因爲字符串「Everyone」是本地化的,所以你應該使用'new SecurityIdentifier(WellKnownSidType.WorldSid,null)'來代替'new NTAccount(...)'(即它在非英語操作系統上是不同的! ) –

相關問題