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