【问题标题】:How to get Administrator privilege with cmake in windows application?如何在 Windows 应用程序中使用 cmake 获得管理员权限?
【发布时间】: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


【解决方案1】:

你应该使用这样的东西。您可能需要根据您的项目类型更改子系统。

SET_TARGET_PROPERTIES(MSP PROPERTIES LINK_FLAGS "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\" /SUBSYSTEM:WINDOWS")

【讨论】:

    猜你喜欢
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多