【问题标题】:C++ Console Application prompt "Run as Admin" to run as administrator?C++ 控制台应用程序提示“以管理员身份运行”以管理员身份运行?
【发布时间】:2011-12-29 16:22:36
【问题描述】:

如何让 C++ 命令应用程序以管理员身份运行?

我创建的程序需要管理员权限,所以让用户以管理员身份运行会很好。 我该怎么做?

注意:我没有使用 Visual Studio,我使用的是 Code::Blocks 10.05;

-斯蒂安

【问题讨论】:

  • 您可以右键单击exe,选择兼容性选项卡,然后选中以管理员身份运行。现在每次启动 exe 时,它​​都会以管理员身份运行。
  • 这是一个不知道怎么做的人可以使用的程序,它是为更多的人而不仅仅是我!?

标签: c++ console


【解决方案1】:

【讨论】:

  • @StianOlsen 使用mt 嵌入清单,或者只是在同一目录中放置一个与.exe 同名的.manifest,例如foo.exefoo.exe.manifest.
  • 您必须使用文本编辑器手动创建它。例如,请参阅我的答案。
  • @ephemient - mt 是一个 Visual Studio 工具,默认情况下它不包含在 Windows 中,我很确定它只适用于 VS。
  • @Polynomial: mt 是 Windows SDK 的一部分。即使它是VS的一部分,有什么问题? VS是免费的,你可以毫无问题地安装它。
  • @CatPlusPlus - 当然,下载并安装价值超过 2GB 的应用程序只是为了将单个清单文件嵌入到应用程序中似乎是一个好主意,尤其是当您可以只拥有清单时包含可执行文件的文件,或将其放在项目的rc 文件中,或使用 PE 编辑器手动将其嵌入资源中;)
【解决方案2】:

您可以创建一个清单文件来声明应用程序需要提升为管理员。它是一个普通的文本文档,您可以在记事本中创建,并在应用程序执行时由 Windows 加载。

这是一个清单示例,用于名为 MyApplication 的应用程序。

<?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="MyApplication"
     type="win32"/> 
  <description>Description of your application</description> 
  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
        </requestedPrivileges>
       </security>
  </trustInfo>
</assembly>

然后只需将其命名为 MyApplication.exe.manifest(将 MyApplication 替换为您的可执行文件名称),UAC 会自动加载它。

如果命名合适,您还可以将清单嵌入可执行文件的资源部分。

查看更多详情:http://msdn.microsoft.com/en-us/library/bb756929.aspx

【讨论】:

    【解决方案3】:

    你也可以使用shell:

    右键单击项目 => 配置属性 => 链接器 => 清单文件 => highestAvailable (/level='highestAvailable')

    【讨论】:

    • 发现这个答案更有用;如果您有一个新的控制台项目并且想要这样做,这就是方法。如果您有一个项目,您已经设置了自己的清单,那么其他答案都可以,但默认情况下,许多 VS 项目会为您创建清单。
    【解决方案4】:

    此解决方案适用于 Visual Studio 2019。

    如果你喜欢我,并且更喜欢 GUI 方法,那么你可以这样做:

    1. 导航到您的解决方案资源管理器窗口。
    2. 右键单击您的项目
    3. 选择属性
    4. 导航到配置属性 -> 链接器 -> 所有选项
    5. 查找 UAC 执行级别
    6. 设置为requireAdministrator (/level='requireAdministrator)

    视觉步骤:

    【讨论】:

    • 我理解问题的主体提到这个特定用户不使用 Visual Studio,但是,由于这是“Visual Studio C++ 以管理员身份运行”的第一个搜索结果之一,并且它没有在标题中提到任何关于 IDE 的地方,我认为将其发布在此处以供将来的搜索查询是合理的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 2010-12-19
    • 1970-01-01
    • 2012-11-22
    • 2013-05-31
    相关资源
    最近更新 更多