Qt在开发 windows 10的时候,经常会因没有权限而不能对文件的读写造成程序各种不知到的bug,以管理员方式运行就不会出现这种问题,为了解决这个问题,故写了这个博客。随带把加载QT程序的图标和QT的版本也说一下。
1、新建一个后缀为.manifest的文件,此处我命名为demo.manifest,编辑打开,写入如下代码
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="mulitray.exe.manifest" type="win32" /> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly>
2、新建一个.rc文件,此处我是以demo.rc文件命名
1 24 DISCARDABLE “demo.manifest”
IDI_ICON1 ICON DISCARDABLE “icon.ico”
#if defined(UNDER_CE)
#include <winbase.h>
#else
#include <winver.h>
#endif
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
#else
FILEFLAGS 0x0L
#endif
FILEOS VOS__WINDOWS32
FILETYPE VFT_DLL
FILESUBTYPE 0x0L
BEGIN
BLOCK “StringFileInfo”
BEGIN
BLOCK “080404b0”
BEGIN
VALUE “CompanyName”, “demo…LTD”
VALUE “FileDescription”, “演示程序”
VALUE “FileVersion”, “1.0.0.1”
VALUE “InternalName”, “demo.exe_2019-12-22”
VALUE “LegalCopyright”, “demo Copyright ©2019”
VALUE “OriginalFilename”, “demo.exe”
VALUE “ProductName”, “demo”
VALUE “ProductVersion”, “1.0.0.1”
END
END
BLOCK “VarFileInfo”
BEGIN
VALUE “Translation”, 0x804, 1200
END
END
说明:
1 24 DISCARDABLE “demo.manifest” 获取管理方式;
IDI_ICON1 ICON DISCARDABLE “icon.ico” 加载应用程序图标
其他事版本控制
注意文件编码的格式是ASCII,不然中文会乱码。
3、加rc文件加入到QT中
RC_FILE = demo.rc