【问题标题】:How do I copy new binaries to C:\Program Files?如何将新的二进制文件复制到 C:\Program Files?
【发布时间】:2023-03-23 20:19:01
【问题描述】:

我正在创建一个自动更新自身的 Windows 应用。出于各种原因,我没有使用 ClickOnce。当我尝试 File.Move() 我更新的文件到 Windows 7 上的 C:\Program Files 时,我收到以下错误:

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

我没有收到 UAC 提示。我正在尝试更新的 exe 当前未运行。

【问题讨论】:

  • 最初是如何安装应用程序的?尝试更新时哪个帐户正在运行程序(管理员或非管理员帐户)?
  • 该应用最初是使用 MSI 安装的,它会提供正确的 UAC 提示。我尝试使用管理员帐户(虽然不是“以管理员身份运行”)运行该应用程序,但它在没有引发 UAC 提示的情况下抛出。 “以管理员身份运行”使其工作,但我不希望我的用户这样做。

标签: .net uac code-access-security


【解决方案1】:

您的问题是 UAC,即使您没有收到 UAC 提示。

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

【讨论】:

  • 只有在确实有要应用的更新时,您才应该以管理员身份运行。
  • 我用正确的清单创建了另一个 exe。当我要安装新的更新时,我会调用另一个 exe 来复制文件。所以 UAC 提示只有在需要的时候才会出现。谢谢。
【解决方案2】:

您无法在程序的安装文件夹中进行更改,您没有所需的管理员权限。向更新程序添加清单是不切实际的,用户很快就会厌倦看到海拔提示。

唯一实用的方法是将更新程序作为计划任务运行。这些任务允许以管理员权限运行,因为它需要管理员权限来安排一个。您需要使用安装程序执行此操作。

【讨论】:

    猜你喜欢
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多