自动将Windows安装程序提升到管理模式

自动将Windows安装程序提升到管理模式,windows,installation,setup-project,Windows,Installation,Setup Project,我们有带有自定义设置的传统桌面本机应用程序。安装程序已签名,必须以管理员身份运行。5年前构建和签署的当前prod setup EXE将自动提升并在Windows 7或8上以管理员身份运行。我们现在重建的安装程序也使用不同的证书进行了签名,并且与旧的安装程序具有相同的名称,但该安装程序不会自动提升到admin,因此会失败 是什么让Windows自动以管理员身份运行setup EXE?签名与管理员权限无关,因此在这方面不必担心 为了扩展Harry Johnson的评论(这是正确的),早期版本的UAC

我们有带有自定义设置的传统桌面本机应用程序。安装程序已签名,必须以管理员身份运行。5年前构建和签署的当前prod setup EXE将自动提升并在Windows 7或8上以管理员身份运行。我们现在重建的安装程序也使用不同的证书进行了签名,并且与旧的安装程序具有相同的名称,但该安装程序不会自动提升到admin,因此会失败


是什么让Windows自动以管理员身份运行setup EXE?

签名与管理员权限无关,因此在这方面不必担心

为了扩展Harry Johnson的评论(这是正确的),早期版本的UAC在Windows上用于自动提升看起来像安装程序的程序。我不知道使用的确切算法,但名称或描述中带有setup或install的程序被提升了。这种情况不再发生,在UAC上,由管理员运行的程序不会提升,除非它们通过清单或以管理员身份运行显式提升

如果您构建setup.exe,则不知道该setup.exe来自何处。或者它附带了一个安装工具的版本(VisualStudio?),那么很难说如何修复它


如果这恰好是一个基于MSI的安装,那么MSI将要求提升,如果它是这样标记的。这个问题不清楚安装程序的哪一部分需要提升,但如果是setup.exe实际执行安装,则所有安装程序都需要提升,并且需要提升清单

最有可能的情况是:旧安装程序没有清单,但Windows成功地猜测它是一个安装程序并请求提升。新安装程序有一个清单,但您尚未显式配置requestedExecutionLevel,因此将其设置为默认值asInvoker。如果您使用的是Microsoft构建工具,请检查/MANIFESTUAC链接器选项的值。您希望将其设置为requireAdministrator。UAC的行为没有改变,但启发式方法仅适用于没有清单的应用程序-这是一种向后兼容性度量。改变的是现代构建工具总是包含清单。