2010-03-16 115 views
1

我正在创建一个自动更新自身的Windows应用程序。由于各种原因,我没有使用ClickOnce。当我尝试File.Move()我更新的文件到C:\ Program Files文件在Windows 7上,我得到以下错误:如何将新的二进制文件复制到C: Program Files?

访问路径“C:\ Program Files文件\ <公司> \ <应用> \ <app.exe>'被拒绝。

我没有给UAC提示。我试图更新的exe目前没有运行。

+0

如何被应用最初安装?尝试更新时(管理员或非管理员帐户)运行程序的帐户是什么? – 2010-03-16 01:17:25

+0

该应用程序最初是使用MSI安装的,它提供了正确的UAC提示。我尝试使用管理员帐户运行应用程序(尽管不是“作为管理员运行”),并且它不会引发UAC提示。 “以管理员身份运行”使其可行,但我不希望我的用户这样做。 – 2010-03-18 02:41:02

回答

1

你的问题是UAC,即使你没有得到UAC提示。

你需要改变你的程序的清单自动提升。 (这会给你一个UAC提示)

+0

为什么这会降低投票率? – SLaks 2010-03-16 01:50:32

+0

如果实际上有要应用的更新,您应该只以管理员身份运行。 – SLaks 2010-03-16 01:51:06

+0

我用适当的清单创建了另一个exe文件。当我有一个新的更新来安装,我打电话给其他exe来复制文件。所以UAC提示仅在需要时才会显示。谢谢。 – 2010-03-18 02:37:42

1

你不能在该程序的安装文件夹的变化,你没有必要的管理权限。将清单添加到更新程序并不实际,用户很快就会看到提升提示。

唯一可行的方法是在运行更新的计划任务。这些任务被允许以管理员权限运行,因为它需要管理员权限来安排一个任务。你需要使用你的安装程序。

相关问题