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