我正在尝试在使用 CMake 和 Visual Studio 构建的可执行文件上设置 RequireAdministrator 清单标志。
关于如何指导 CMake 设置该选项有什么想法吗?
谢谢!
比利3
我很欣赏这个问题被标记为 Visual-studio-2008,但对于 VS2010 这会产生以下错误消息:
错误 MSB4030:“level='requireAdministrator' uiAccess='false'”对于“Link”任务的“UACUIAccess”参数来说是无效值。 “UACUIAccess”参数的类型为“System.Boolean”。
VS2010 的等效 CMake 命令(忽略 /SUBSYSTEM:WINDOWS 部分)是
SET_TARGET_PROPERTIES(your_executable PROPERTIES LINK_FLAGS "/level='requireAdministrator' /uiAccess='false'")
试试这个:
SET_TARGET_PROPERTIES(your_executable PROPERTIES LINK_FLAGS "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\" /SUBSYSTEM:WINDOWS")
如果是控制台应用程序,则需要删除“/SUBSYSTEM:WINDOWS”。
试试这个:
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS " /MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\" ")
使用 cmake 3.24.2 可以很好地配合:
target_link_options(<target name> PRIVATE "/MANIFESTUAC:level='requireAdministrator'" PRIVATE "/MANIFESTUAC:uiAccess='false'")
根据 Fraser 所说,在 cmake 3.9.1 和 Visual Studio 10 中对我有用的命令是:
SET_TARGET_PROPERTIES(your_executable PROPERTIES LINK_FLAGS "/MANIFESTUAC: /level='requireAdministrator' /uiAccess='false'")