我有一个应用程序在启动时自动执行升级程序应用程序。但是,当第一个应用程序启动并看到需要升级时,它会启动升级程序并且由于 Vista 中的安全性而失败。如果我以管理员身份手动启动升级程序,则它可以正常运行。
1)如何从第一个应用程序自动执行此操作?
2) 如果我将属性设置为以管理员身份启动,那么我会看到安全对话框...如何在没有任何 Vista 安全/权限对话框的情况下启动它?
谢谢您的帮助!!
我有一个应用程序在启动时自动执行升级程序应用程序。但是,当第一个应用程序启动并看到需要升级时,它会启动升级程序并且由于 Vista 中的安全性而失败。如果我以管理员身份手动启动升级程序,则它可以正常运行。
1)如何从第一个应用程序自动执行此操作?
2) 如果我将属性设置为以管理员身份启动,那么我会看到安全对话框...如何在没有任何 Vista 安全/权限对话框的情况下启动它?
谢谢您的帮助!!
所以你想启动一个需要管理员权限但没有管理员权限的安装?因为,您知道,启用 UAC 后,启动具有管理员权限的应用程序需要定义对话框。这就是它的全部意义所在。
甚至不要尝试。看看 Firefox,一个不错的自动更新应用程序。您必须确认每次更新的同意对话框,这很好。因为如果用户不想这样,他可以禁用 UAC。但那是他的问题,不是你的。您不应该为您的程序禁用 UAC。这就像客人需要打开所有门才能进入,而您只需敲响前门的门铃。
将清单嵌入到指定requireAdministrator
. 如果用户启用了 UAC,这将显示同意对话框,如果用户禁用了 UAC,它将完美地工作。
关于 Reed Copsey 的解决方案 1:如果您的更新程序是一项服务,人们可能不喜欢这样。除非您是一家值得信赖的反病毒公司,否则这可能会严重损害您的声誉。
如果您尝试在自己的系统上执行此操作,请按照 I3a0 的建议禁用 UAC 。
如果这是您在其他系统上部署的软件,恐怕没有直接的方法可以做到这一点。避免安全对话将完全击败 UAC 系统 - 如果有一种简单的方法可以绕过它,那将毫无用处。该对话框存在是因为您正在执行需要提升权限的操作。
这里有几个选项:
1) 将升级程序重写为服务,使用来自用户空间应用程序的某种形式的 IPC,通知它升级。这将允许它以管理员身份安装在系统上,并在后台运行,因此当您请求升级时它已经具有管理员权限。
2) 找出升级应用程序中具体需要提升权限的内容,并重新处理这些部分,以便它可以作为普通用户运行。
一个直接的方法是禁用 Vista 的 UAC。有关如何执行此操作的信息,请访问 http://www.vista4beginners.com/How-to-disable-UAC。这种方法的一个明显缺陷是它会影响所有应用程序,这可能会带来安全问题。如果安全是一个问题,您可能希望采用另一种方法。