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

C# 当用户是管理员时,.NET应用程序为什么不能覆盖文件?,c#,.net,file-permissions,C#,.net,File Permissions,我的WPF应用程序将文件下载并缓存到C:\ProgramData\CompanyName\ProductName\Data\目录中 如果其他用户在下载(创建)该文件时登录,即使我是管理员,也无法覆盖该文件以进行更新 当我还是管理员用户时,为什么我没有写权限? 屏幕截图显示了我无法覆盖的文件的文件权限 我知道我必须提升流程以执行“管理”任务(),但考虑到另一个用户是管理员(我也是),并且文件的“所有者”是“管理员”-为什么我没有对所有者在同一组中的文件的写权限?为什么我们不共享相同的权限?下载并

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

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

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


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

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

var fileSecurity = File.GetAccessControl(path);

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

File.SetAccessControl(path, fileSecurity);

这不是管理权限的工作方式。即使您是administrators组的成员,也必须请求提升以使用管理权限。请参阅:相关:允许所有用户修改文件的可能重复存在安全风险,特别是对于使用该文件中的可执行文件的应用程序directory@Ferrybig我们谈论的是C:\ProgramData,而不是C:\Programs。OP询问一些已下载和缓存的文件,这些文件本质上是临时的。@克莱门斯,但为什么如果我授予新组“NewGroup”的权限,如果组“Administrators”的所有成员当前都没有写权限,那么所有成员都有写权限?区别是什么?@defensetrationday您可以显式地为您喜欢的任何SecurityIdentifier设置FileSystemRights.FullControl。看看WellKnownSidType枚举。