如何授予我的应用程序为所有用户创build的文件的完整权限?

我开发的工具需要授予对其创build的文件的访问权限“完全控制”。 它需要阅读,修改和删除所有的Windows帐户,甚至可能的未来帐户。 这能实现吗?

我知道我可以尝试这个SPECIFIC_USER:

FileSystemAccessRule rule = new FileSystemAccessRule(SPECIFIC_USER, FileSystemRights.FullControl, AccessControlType.Allow); FileSecurity fSecurity = File.GetAccessControl(filePath); fSecurity.SetAccessRule(rule); File.SetAccessControl(filePath, fSecurity); 

但是,如何将其授予所有用户? 甚至可能的未来账户? 如果后半部分是不可能的,怎么去解决第一个要求?

谢谢。

编辑:

这是为我工作的代码。 从回答者的链接采取。

 private bool GrantAccess(string fullPath) { DirectoryInfo dInfo = new DirectoryInfo(fullPath); DirectorySecurity dSecurity = dInfo.GetAccessControl(); dSecurity.AddAccessRule(new FileSystemAccessRule("everyone", FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.NoPropagateInherit, AccessControlType.Allow)); dInfo.SetAccessControl(dSecurity); return true; } 

请注意PropagationFlags.NoPropagateInherit是必需的(在链接中提到最后)。 它确实授予甚至未来的帐户的特权。

注意使用这个的人。

当为FileSystemAccessRule使用文字string时,它应该是WellKnownSidType.WorldSid而不是"everyone"

原因是因为有多种Window语言,每个人都只适用于EN语言,所以对于西class牙语来说,它可能是“Todos”(或别的东西)。

 using System.Security.AccessControl; using System.Security.Principal; using System.IO; private void GrantAccess(string fullPath) { DirectoryInfo dInfo = new DirectoryInfo(fullPath); DirectorySecurity dSecurity = dInfo.GetAccessControl(); dSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.NoPropagateInherit, AccessControlType.Allow)); dInfo.SetAccessControl(dSecurity); } 

您需要完全控制机器上的“每个人”组。 在MSDN上find这个post,谈论它。

希望这对你有用。