类似于: Request Windows Vista UAC elevation if path is protected?
我在c:\ Program Files(Windows Vista)中安装了.NET客户端应用程序。此应用程序应自行更新,但不会因为权限问题而更新。自动更新程序应该只是替换几个程序集,但它们都位于c:\ Program File下,应用程序抛出以下异常:
System.UnauthorizedAccessException的: 访问路径'C:\ Program 文件......'被拒绝。
我无法控制应用程序的安装位置和权限。这有什么解决方法吗?是否可以在几秒钟内请求管理员权限?是否可以弹出UAC窗口?我很确定有一个解决方法......否则,Firefox将如何更新自己?
提前感谢您的帮助和想法!
答案 0 :(得分:5)
您可以使用Click Once部署方法吗?我们将此用于内部应用程序,用户在发布新版本时没有权限问题。系统会提示他们在启动应用程序时安装更新(如果存在新版本),并且安装顺利进行。
答案 1 :(得分:3)
您无法在中途提升流程的权限,但您可以启动另一个具有更高权限的单独流程,以便为您完成工作。
让您的主应用程序将所有文件/安装详细信息放入低权限的临时位置。准备好后,启动一个较小的应用程序,其唯一的工作是将这些文件复制到Program Files目录(并可能使用新的更新重新启动主应用程序)。将该应用程序标记为需要复制到Program Files目录所需的权限或写入注册表(或其他任何需要的内容)。