因此,事实证明,我有另一个错误,导致无升级运行分支在所有情况下运行。我在帖子中描述的模型工作。为避免Windows推断提升权限的需要,您需要添加清单资源。 (例如,如果你的应用程序exe文件的名称中包含单词“更新”将触发)
清单的内容如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
到您的.exe取决于它编译你的编译器和环境,所以我只显示我的:Qt Creator的和MinGW-GCC:
创建的资源包含以下内容的RC文件:
1 24 DISCARDABLE manifest.xml
该RC文件添加到您的.pro这样的:
win32:RC_FILE = resources.rc
在此之后,ShellExecute的无动词放慢参数将不抬高运行,并使用“运行方式”将抬高运行它。
这大致就是我所说的。 –
我更喜欢这个答案。少说话,多写代码。 –