2

我们的应用程序有一个安装程序。(一个 C++ 程序,在 VisualStudio 2012 中创建。)安装程序现在已签名并需要提升权限 - 用户会收到一个简洁的 UAC 问题。

但是,对于某些客户来说,安装程序需要很多其他文件。我们使用 IExpress 创建自解压存档。用户运行自解压 EXE 文件,文件被解压,我们的安装程序启动。

但是在我们添加了 UAC 支持后,这不起作用。IExpress 构建的 EXE 不会启动需要提升权限的程序。

一个简单的解决方案是 IExpress 构建的 EXE 也需要提升的权限。但我还没有找到 IExpress 的标志来做到这一点。(或者我错过了什么?)

有没有一种简单的方法可以将“需要提升的权限”添加到现有的 EXE 文件中?

4

3 回答 3

2

一个相当简单的方法似乎是 via cmd.exe。只需更改您的安装程序,例如:

setup.exe

cmd /c setup.exe

那么IExpress“神奇的UAC检测”就不会发生,当你的程序运行时用户会得到标准的UAC提示。


如果您想了解更多……</p>

新版本的 IExpress 包含一个清单,它故意不为 IExpress 生成的包本身请求 UAC 提升。这是它的样子wextract.exe(实际捆绑在您生成的包中的部分):

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
  <security>
    <requestedPrivileges>
      <requestedExecutionLevel
        level="asInvoker"
        uiAccess="false"/>
    </requestedPrivileges>
  </security>
</trustInfo>

根据 MSDNasInvoker级别意味着:应用程序将以与启动它的进程相同的权限运行。

显然有一些程序可以事后修改清单。一个叫做 ResEdit,虽然我建议你从 SoftPedia 下载它,因为 .net 网站现在似乎带有一些广告软件。我没有任何运气(我想是因为我没有安装 Visual Studio),但也许它对你有用。

如果您决定走这条路线,请尝试将 更改levelrequireAdministrator

于 2015-09-12T10:12:44.273 回答
0

如果您右键单击安装程序 exe 文件,请转到Properties并单击,Compatibility然后选中名为的复选框Run this program as a administrator并单击OK它应该可以工作。

于 2021-11-16T21:06:38.593 回答
0

您可以在 iexpress 向导的安装后命令中尝试此操作:-

PowerShell -windowstyle hidden -command "Start-Process -Wait setup.exe -Verb Runas"

-windowstyle hidden 隐藏 powershell 窗口。

-Wait 等待 setup.exe 完成后再删除临时文件(默认提取 iexpress 文件)

-动词 Runas 请求提升。

于 2020-08-29T11:17:22.707 回答