Vista 要求安装驱动程序或其他系统项目的安装程序具有更高的权限。Pointsec 有其中一个安装程序,其问题是安装程序本身不请求提升,因此必须事先授予它提升。
当将此软件安装到多台禁用 UAC 的机器上时,安装该软件然后重新启用 UAC 非常繁琐。一种可以照顾 UAC 的方法将是首选。
安装程序是网络共享上的 MSI 包。该共享还具有安装配置文件,安装程序应该在安装中找到并使用该配置文件。这在没有 UAC 的情况下可以正常工作,但我们还没有设法通过 UAC 运行它。
我的主要问题是,在提升进程时,它似乎丢失了它的工作目录。因此,虽然具有正确参数的 msiexec 快捷方式和作为工作目录的网络共享工作(即启动但由于没有提升而导致错误)以“管理员”身份运行此快捷方式时抱怨找不到 msi 包。进程监视器显示 msiexec 试图从 Windows\System32 中查找程序包。指定包的完整 UNC 路径会启动安装程序,但无法找到配置文件。那么提升本身不要求提升的Windows安装程序的正确方法是什么?
基本上你有一个设计不佳的安装程序。
您可以尝试将属性表中的 ALLUSERS 属性设置为 1(使用 Orca,在Windows Installer SDK中查找 Orca.msi ),这将强制每台机器安装。
在这种情况下,安装程序将在安装过程中请求提升(UAC + MSI 应该是这样工作的),你应该没问题。
帖子为什么在我提升命令提示符时忽略我的起始目录?关于 Raymond Chen 的博客可能与这里有关。
我也知道一些提升启发式方法非常简单,例如,如果文件名为“setup”或“install”,它将请求提升。我暂时找不到这方面的来源。
不是一个高度技术性的答案,但也许它会很有用。
一种方法是运行提升的命令提示符,更改其中的工作目录,然后从那里运行安装程序。从提升的 cmd.exe 启动的任何内容本身都是提升的。