【发布时间】:2016-05-27 18:58:28
【问题描述】:
我有一个需要解决的 Windows 权限问题。我的 .NET 应用程序使用更新机制,其中一个额外的 update.exe 被复制到 %TEMP% 然后执行。此 update.exe 然后检查它是否可以写入正常的程序安装路径 - 如果不能,它会以提升的权限再次启动。然后,更新过程发生:使用 .NET File.Copy() 方法下载文件(包括新版本的主应用程序.exe)。
到目前为止,一切正常。
但是当尝试运行现在更新的 application.exe 时,我无法启动它! Windows 安全对话框显示,“普通用户”对该文件没有任何权限!我什至看不到应用程序的图标。更改该文件的权限以让普通用户“读取和执行”该文件,它再次起作用。
这是我的问题:
是否有可能让 Windows 赋予新复制的文件正确的用户权限?还是我必须在 .NET 中做一些特别的事情?
应用程序安装在不同的客户环境中,没有其他选择,只能让主应用程序作为非特权用户运行。如果需要,更新(Windows UQC 需要管理员密码)由管理员完成。
任何帮助将不胜感激。
-
根据 Falco Alexander 的评论进行编辑:
该文件夹具有以下权限:
* CREATOR-OWNER:“特殊权利”
* 系统:完全控制
* 管理员:完全控制
* 用户:读取、执行和列出文件夹内容
* 受信任的安装程序:列出文件夹内容
希望这些附加信息对您有所帮助...
【问题讨论】:
-
我猜有什么。描述中不见了?!你能命名文件夹的确切NTFS权限吗,因为新复制的文件会继承这些
-
我添加了你问的信息...
-
这很奇怪,似乎是升级更新程序的副作用。请检查文件夹的 NTFS 继承设置。请记住 .copy 继承文件夹设置,而 .move 没有。 msdn.microsoft.com/en-us/library/…
标签: .net windows permissions