Qt Creator编译后的程序以管理员权限运行实现方式

一、使用 QMAKE_LFLAGS 直接嵌入 UAC 权限

        修改 .pro 文件,在您的 Qt 项目文件(.pro)中添加以下代码:

qmake

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

        仅仅release版本启用UAC权限

win32 {
    CONFIG(release, debug|release) {
        QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\"
    }
}
  • level='requireAdministrator':强制要求管理员权限(程序启动时弹出 UAC 提示)。

  • level='asInvoker':默认权限(不提升)。

  • level='highestAvailable':尽可能提升权限(但不强制)。

  • uiAccess='false':禁用 UI 自动化权限(除非需要跨进程 UI 操作,否则保持 false)。

生效方式

  1. 重新编译项目qmake → 构建)。

  2. 生成的 .exe 文件运行时 会自动请求管理员权限(UAC 弹窗)。

二、修改程序清单

        Windows 程序可以通过 清单文件(Manifest) 声明它需要管理员权限。在 Qt 项目中,您可以通过 .pro 文件配置,使编译后的程序自动请求管理员权限。

步骤

  1. 在项目目录下创建 app.manifest 文件(如 YourApp.manifest),内容如下:

    xml

    
    
      
        
          
            
          
        
      
    
    • level="requireAdministrator":强制要求管理员权限(否则程序无法启动)。

    • level="asInvoker":默认权限(不提升)。

    • level="highestAvailable":尽可能提升权限(但不强制)。

  2. 在 .pro 文件中添加以下内容

    qmake

    win32 {
        QMAKE_LFLAGS += /MANIFEST:EMBED
        QMAKE_LFLAGS += /MANIFESTINPUT:$$PWD/YourApp.manifest
    }
    • 替换 YourApp.manifest 为您的清单文件名。

  3. 重新编译程序,运行时会自动请求管理员权限。

三、对比:QMAKE_LFLAGS vs .manifest 文件

方式 优点 缺点
QMAKE_LFLAGS 无需额外文件,直接嵌入清单 灵活性较低(不能定义其他清单属性)
.manifest 文件 可定制更多清单选项(如兼容性、DPI 感知) 需要维护单独文件

四、含兼容性、DPI 感知等属性的完整 .manifest 文件示例

xml



  
  
    
      
        
      
    
  

  
  
    
      
        PerMonitorV2
      
      
        True
      
    
  

  
  
    
      
        true
      
    
  

  
  
    
      
       
       
    
  

验证清单是否生效

方法 1:使用 mt.exe 检查

sh

mt.exe -inputresource:YourApp.exe -out:extracted.manifest

查看生成的 extracted.manifest 是否包含配置。

方法 2:右键属性 → 兼容性

  • 如果清单正确,兼容性选项卡会显示“由应用程序管理”(无法手动修改)。

方法 3:运行测试

  • 程序启动时应 自动弹出 UAC 提示(管理员权限)。

  • 在高分辨率屏幕上 无模糊显示(DPI 感知生效)。

你可能感兴趣的:(QT,qt)