C++控制台应用程序提示“以管理员身份运行”如何运行?

3

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

我正在创建的程序需要管理员权限,因此让用户获得以管理员身份运行的提示会很好。我该怎么做呢?

注意:我不使用Visual Studio,我使用Code::Blocks 10.05;

-Stian


您可以右键单击exe文件,选择兼容性选项卡,然后勾选以管理员身份运行。现在每次启动exe文件时,它都将作为管理员运行。 - kol
这是一个程序,即使不会做的人也可以使用它,它旨在服务于更多的人,而不仅仅是我自己! - Stian
4个回答

10

您也可以使用shell:

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


发现这个答案更有用;如果你有一个新的控制台项目并且想要做到这一点,那么就按照以下步骤操作。如果您已经设置好了自己的清单文件的项目,则其他答案可以正常工作,但是默认情况下,许多VS项目会为您创建清单文件。 - aggieNick02

7
您可以创建一个清单文件来说明应用程序需要提升为管理员权限。这是一个普通的文本文档,您可以使用记事本创建,并在应用程序执行时由 Windows 加载。
以下是一个示例清单,适用于名为“我的应用程序”的应用程序。
<?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

@StianOlsen 使用 mt 嵌入清单,或者只需在相同目录下放置与 .exe 文件同名的 .manifest 文件,例如 foo.exefoo.exe.manifest - ephemient
你必须手动使用文本编辑器创建它。请参考我的答案中的示例。 - Polynomial
@Polynomial: mt是Windows SDK的一部分。即使它是VS的一部分,有什么问题呢?VS是免费的,你可以毫无问题地安装它。 - Cat Plus Plus
@Polynomial,如果有人在开发Windows应用程序时没有使用Windows SDK,那将会让我感到惊讶。我所知道的最可行的替代方案是Mingw,可以通过添加一个资源文件并使用windres来实现。不过我不知道Code::Blocks背后的情况。 - ephemient
你实际上不需要嵌入清单。只要将其作为单独的文件发送即可,如果您正确命名它,例如name.exe变成name.exe.manifest - Polynomial
显示剩余3条评论

0

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

如果您像我一样喜欢使用GUI方法,那么请按照以下步骤进行:

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

可视化步骤:

Project Properties Selection Menu

Project Property Page


我知道问题的正文提到这位特定用户没有使用Visual Studio,然而,由于它是“visual studio C++ run as admin”搜索结果中最先出现的一个,并且在标题中没有提到任何关于IDE的信息,我相信将其发布在这里以备将来的搜索查询是合理的。 - UnAlpha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接