当用户为管理员时,为什么.NET应用程序不能覆盖文件?

时间:2019-05-07 11:45:14

标签: c# .net file-permissions access

我的WPF应用程序将文件下载并缓存到C:\ProgramData\CompanyName\ProductName\Data\目录中。

如果另一个用户在下载(创建)文件时登录,即使我是管理员,我也无法覆盖该文件以进行更新。

当我也是管理员用户时为什么没有写访问权限?
屏幕截图显示了我无法覆盖的文件的文件权限。

Account Settings

我知道我必须提升流程来执行“管理员”任务(as explained here),但是看到另一个用户是管理员(我也是),并且看到另一个用户是管理员。文件是“管理员”-为什么我对所有者在同一组中的文件没有写权限?我们为什么不共享相同的特权?

1 个答案:

答案 0 :(得分:1)

下载并保存文件后,您可以通过如下代码为所有用户(或任何其他适当的组)设置完全访问权限:

var fileSecurity = File.GetAccessControl(path);

fileSecurity.AddAccessRule(
    new FileSystemAccessRule(
        new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null),
        FileSystemRights.FullControl,
        AccessControlType.Allow));

File.SetAccessControl(path, fileSecurity);