首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将我的应用程序创建的文件的完全权限授予所有用户?

如何将我的应用程序创建的文件的完全权限授予所有用户?
EN

Stack Overflow用户
提问于 2012-02-02 15:10:22
回答 2查看 80K关注 0票数 76

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

我知道我可以尝试一下SPECIFIC_USER:

代码语言:javascript
复制
FileSystemAccessRule rule = new FileSystemAccessRule(SPECIFIC_USER, FileSystemRights.FullControl, AccessControlType.Allow);
FileSecurity fSecurity = File.GetAccessControl(filePath);
fSecurity.SetAccessRule(rule);
File.SetAccessControl(filePath, fSecurity);

但是我如何将它授予所有用户呢?甚至是未来可能的账户?如果后半部分是不可能的,那么如何着手第一个需求呢?

谢谢。

编辑:

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

代码语言:javascript
复制
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);
}

注意所需的PropagationFlags.NoPropagateInherit (在链接的最后提到)。即使是将来的帐户,它也会授予特权。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-25 21:51:01

使用此工具的用户请注意。

当对FileSystemAccessRule使用文本字符串时,它应该是WellKnownSidType.WorldSid而不是"everyone"

原因是因为有多种窗口语言,每个人都只适用于EN种,所以对于西班牙语,它可能是"Todos“(或其他东西)。

代码语言:javascript
复制
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);
}
票数 131
EN

Stack Overflow用户

发布于 2012-02-02 15:17:24

您需要完全控制计算机上的"Everyone“组。在MSDN上找到了关于它的this帖子。

希望这对你有用。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9108399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档