QT中為程序加入超級管理員權限


 

QT的一些文件操作,注冊表的操作等,有些操作會無效,主要是因為沒有對C盤的相關權限。

解決方法:

1. mingw編譯器

在pro工程文件中加入

RC_FILE=main.rc

rc文件,之前一篇博客中為程序增加圖標也用到此文件,沒錯!可以為程序添加icon
main.rc

IDI_ICON1               ICON     DISCARDABLE     "./res/logo.ico" 1 24 uac.manifest

第一行是為程序添加icon的;
第二行是增加權限,注意是manifest,不是mainfest。之前我看錯了~
下面看看uac.manifest:

<?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.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level='requireAdministrator' uiAccess='false' /> </requestedPrivileges> </security> </trustInfo> </assembly> 

OK,這樣就行了。看網上有些朋友說此方法行不通,可能是編譯器不一樣吧。在VS編譯器上這樣用會報錯,VS編譯器請看第二種方法。

2.VS編譯器
在QT工程文件pro中加入QMAKE_LFLAGS的增加配置:

QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\"

3.CMAKE, 放在add_executable的后面

set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\" /SUBSYSTEM:WINDOWS")

 


這樣生成的應用程序圖標上會多一個盾牌,運行時會有管理員權限,寫入注冊表,寫文件,刪文件不會再會失敗了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM