我开发的工具需要向其创建的文件授予访问权限“完全控制”。需要从所有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(
new SecurityIdentifier(WellKnownSidType.WorldSid, null),
FileSystemRights.FullControl,
InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit,
PropagationFlags.NoPropagateInherit,
AccessControlType.Allow));
dInfo.SetAccessControl(dSecurity);
return true;
}
请注意PropagationFlags.NoPropagateInherit
这是必需的(在链接的最后提到)。它确实为以后的帐户授予特权。
new SecurityIdentifier(WellKnownSidType.WorldSid, null)
它返回SecurityIdentifier对象。每个人都只能在英语Windows装置上工作,使用其他方法可确保它与多种语言版本兼容。