【问题标题】:Programmatically execute app in Vista在 Vista 中以编程方式执行应用程序
【发布时间】:2009-06-15 15:55:25
【问题描述】:

我有一个应用程序,它在启动时自动执行升级程序应用程序。但是,当第一个应用程序启动并看到需要升级时,它会启动升级程序并由于 Vista 中的安全性而失败。如果我以管理员身份手动启动升级程序,则它可以正常运行。

1) 如何从第一个应用程序自动执行此操作?

2) 如果我将属性设置为以管理员身份启动,那么我会看到安全对话框...如何在没有任何 Vista 安全/权限对话框的情况下启动它?

感谢您的帮助!

【问题讨论】:

    标签: windows-vista permissions launch


    【解决方案1】:

    所以你想启动一个需要管理员权限的安装没有管理员权限?因为,您知道,启用 UAC 后,启动具有管理员权限的应用程序需要定义对话框。这就是它的全部意义所在。

    甚至不要尝试。看看 Firefox,一个不错的自动更新应用程序。您必须确认每次更新的同意对话框,这很好。因为如果用户不想这样,他可以禁用 UAC。但那是他的问题,不是你的。您不应该为您的程序禁用 UAC。这就像一位客人需要解锁所有门才能进入,而您只需按一下前门的铃

    将清单嵌入到指定requireAdministrator 的更新程序中。如果用户启用了 UAC,这将显示同意对话框,如果用户禁用了 UAC,它将完美运行。

    关于 Reed Copsey 的解决方案 1:如果您的更新程序是一项服务,那么人们可能不喜欢这样。除非您是一家值得信赖的反病毒公司,否则这可能会严重损害您的声誉。

    【讨论】:

    • 这是一个商业应用程序,因此禁用 UAC 取决于用户,而不是我们,所以我想这不是一个理想的解决方案。至于服务,我同意。
    【解决方案2】:

    如果您尝试在自己的系统上执行此操作,禁用 UAC,as suggested by I3a0 将起作用。

    如果这是您在其他系统上部署的软件,恐怕没有直接的方法可以做到这一点。避免安全对话将完全击败 UAC 系统 - 如果有一种简单的方法可以绕过它,那将毫无用处。该对话框存在是因为您正在执行需要提升权限的操作。

    这里有几个选项:

    1) 将您的升级程序重写为服务,使用来自用户空间应用程序的某种形式的 IPC,通知它升级。这将允许它以管理员身份安装在系统上,并在后台运行,因此在您请求升级时它已经拥有管理员权限。

    2) 找出升级应用程序中具体需要提升权限的内容,并重新修改这些部分,以便它可以作为普通用户运行。

    【讨论】:

      【解决方案3】:

      直接的方法是禁用 Vista 的 UAC。有关如何执行此操作的信息,请访问 http://www.vista4beginners.com/How-to-disable-UAC。这种方法的一个明显缺陷是它会影响所有应用程序,这可能会带来安全问题。如果您担心安全问题,您可能希望采用其他方法。

      【讨论】:

      • 这不仅不是直截了当或安全问题,而且是用户对问题的解决方案。从应用程序的角度来看,它并没有解决原来的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      • 2017-10-03
      相关资源
      最近更新 更多