如何通过.NET File.Copy()方法将文件复制到Windows

时间:2016-02-16 13:10:57

标签: .net windows permissions

我有一个需要解决的Windows权限问题。我的.NET应用程序使用更新机制,将额外的update.exe复制到%TEMP%,然后执行。然后,此update.exe检查它是否可以写入正常的程序安装路径 - 如果没有,它将以提升的权限再次启动。然后,进行更新过程:使用.NET File.Copy()方法下载文件(包括主应用程序的新版本)。
到目前为止,一切正常。

但是在尝试运行现在更新的application.exe时,我无法启动它! Windows安全对话框说,"普通用户"对该文件没有任何权利!我甚至看不到应用程序的图标。更改该文件的权限,让普通用户“阅读并执行”#34;该文件,它再次有效。

这是我的问题:
是否有可能让Windows为新复制的文件提供正确的用户权限?或者我必须在.NET中做一些特殊的事情吗?

应用程序安装在不同的客户环境中,其中没有其他选项,然后让主应用程序作为非特权用户运行。如果需要,更新(Windows UQC需要管理员密码)由管理员完成。

非常感谢任何帮助。

-

由于Falco Alexander的评论而编辑:

该文件夹具有以下权利:
* CREATOR-OWNER:"特殊权利"
* SYSTEM:完全控制
*管理员:完全控制
*用户:读取,执行和列出文件夹内容
*可信安装程序:列出文件夹内容

希望这些额外的信息帮助......

1 个答案:

答案 0 :(得分:0)

我现在使用FileInfo.SetAccessControl()解决了这个问题。

这对我有所帮助,我希望它也适用于所有客户安装。

感谢Falco Alexander,他向我指出了访问权限修改。