因此,事實證明,我有另一個錯誤,導致無升級運行分支在所有情況下運行。我在帖子中描述的模型工作。爲避免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的無動詞放慢參數將不擡高運行,並使用「運行方式」將擡高運行它。
這大致就是我所說的。 –
我更喜歡這個答案。少說話,多寫代碼。 –