3

类似于: 如果路径受到保护,请求 Windows Vista UAC 提升?

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

System.UnauthorizedAccessException:对路径“C:\Program Files...”的访问被拒绝。

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

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

4

2 回答 2

5

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

于 2009-02-08T00:46:45.987 回答
3

您不能在中途提升进程的权限,但您可以启动另一个具有更高权限的单独进程来为您完成工作。

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

于 2009-02-08T00:41:54.670 回答