【发布时间】:2019-06-28 10:10:36
【问题描述】:
我想使用 CMake 构建一个需要管理员权限的窗口应用程序。 我尝试添加 "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\" /SUBSYSTEM:WINDOWS" ,但它不起作用
环境:Windows10
IDE:VS2017
CMAKE : 默认使用 VS2017,版本 3.12.18081601-MSVC_2
add_executable(MSP_D WIN32 ${MSP_D_SRC} msp_d.rc)
SET_TARGET_PROPERTIES(MSP_D PROPERTIES LINK_FLAGS "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\" /SUBSYSTEM:WINDOWS")
如何解决这个问题?如何达到我的目的? 任何建议将不胜感激。
【问题讨论】:
-
运行 cmake 来生成构建脚本或从源代码构建应用程序通常不需要管理员权限。如果应用程序在构建后需要管理员访问权限,则需要由具有所需权限的用户/进程安装或运行。这通常意味着您将需要具有管理员权限的人的帮助,或有权访问(例如,用户名和密码的知识)的特权帐户。如果非特权用户能够绕过这种需求,那么系统安全将毫无意义。
-
@Peter 是的,我知道。但我想使用这个应用程序添加 HTTPS 认证,所以它需要管理员权限。你能帮我解决这个问题吗?
-
您添加了名称为
MSP_D的可执行文件,但尝试在your_executable上设置目标属性,这显然无法正常工作。属性的行应该是SET_TARGET_PROPERTIES(MSP_D PROPERTIES LINK_FLAGS "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\" /SUBSYSTEM:WINDOWS")。 -
@GSIO01 我知道,这是我的编辑错误。但实际上它是 MSP_D 而不是 your_executable。而使用 MSP_D,它就不起作用了。
-
看看这是否有效。 SET_TARGET_PROPERTIES(MSP PROPERTIES LINK_FLAGS "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\" /SUBSYSTEM:WINDOWS")
标签: c++ windows cmake visual-studio-2017