以编程方式在Vista中执行应用程序

时间:2009-06-15 15:55:25

标签: windows-vista permissions launch

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

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

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

感谢您的帮助!!

3 个答案:

答案 0 :(得分:4)

因此,您希望启动需要管理员权限而无需管理员权限的安装?因为,您知道,启用UAC后,启动具有管理员权限的应用程序需要按照定义进行对话。这就是它的全部意义。

甚至不要尝试。看看Firefox,一个自动更新的体面应用程序。您必须为每次更新确认同意对话框,这没关系。因为如果用户不想这样,他可以禁用UAC。但那是他的问题,不是你的问题。您不应该从/为您的程序禁用UAC。这就像客人需要解锁所有门才能在前门敲响铃声

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

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

答案 1 :(得分:1)

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

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

这里有几个选项:

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

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

答案 2 :(得分:-1)

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