需要在Program File文件夹中写入的自更新.NET客户端应用程序

时间:2009-02-08 00:39:20

标签: c# .net-3.5 uac file-permissions

类似于: Request Windows Vista UAC elevation if path is protected?

我在c:\ Program Files(Windows Vista)中安装了.NET客户端应用程序。此应用程序应自行更新,但不会因为权限问题而更新。自动更新程序应该只是替换几个程序集,但它们都位于c:\ Program File下,应用程序抛出以下异常:

  

System.UnauthorizedAccessException的:   访问路径'C:\ Program   文件......'被拒绝。

我无法控制应用程序的安装位置和权限。这有什么解决方法吗?是否可以在几秒钟内请求管理员权限?是否可以弹出UAC窗口?我很确定有一个解决方法......否则,Firefox将如何更新自己?

提前感谢您的帮助和想法!

2 个答案:

答案 0 :(得分:5)

您可以使用Click Once部署方法吗?我们将此用于内部应用程序,用户在发布新版本时没有权限问题。系统会提示他们在启动应用程序时安装更新(如果存在新版本),并且安装顺利进行。

答案 1 :(得分:3)

您无法在中途提升流程的权限,但您可以启动另一个具有更高权限的单独流程,以便为您完成工作。

让您的主应用程序将所有文件/安装详细信息放入低权限的临时位置。准备好后,启动一个较小的应用程序,其唯一的工作是将这些文件复制到Program Files目录(并可能使用新的更新重新启动主应用程序)。将该应用程序标记为需要复制到Program Files目录所需的权限或写入注册表(或其他任何需要的内容)。