c++ - 启动时通过UAC授予c++程序管理权限

标签 c++ admin uac privileges runas

所以我做了一些研究,但我有兴趣了解如何让他的程序在执行前向 UAC 请求管理权限。这是否需要在 ShellExecute() 中使用“runas”?我意识到这是我在编程冒险中需要理解的东西,因为几乎我安装的每个程序都问过我这个问题。因此,例如,如果我在启动时授予程序权限,它就可以通过 system() 函数执行任何批处理文件或 cmd 语句,对吗?

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    system("notepad");
    return 0;
}

最佳答案

您可以在可执行文件 list 文件中设置 requireAdmin,然后这将请求您的应用程序被提升为管理员,用户可能必须提供额外的凭据(如运行方式)。 它会在资源管理器中为您的应用程序图标设置一个小防护罩。

在 Visual Studio 中

  • 选择项目的属性,
  • 然后打开“配置属性”
  • 然后打开链接器
  • 选择“ list 文件”
  • 并修改“UAC Execution Level”为requireAdministrator

您可以通过其他方式执行此操作,但这是最简单的方法之一。 因此,在您的示例中,如果您编写的程序将 UAC 执行级别设置为“requireAdministrator”,那么在这种情况下记事本中,您调用的程序也会被提升。 (我认为可能有一些方法可以确保你没有被提升,但我从来没有这样做过)

关于c++ - 启动时通过UAC授予c++程序管理权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20428102/

相关文章:

windows - 是什么让 c :\Program Files UAC-protected?

Windows UAC 的 C++ 问题

c++ - 使用打印功能输出到新文件

database - 如何找到 DB2 (luw) 数据库的大小?

python - Django 管理列表显示优化查询集

PHP用户管理系统

c# - 如何判断请求的目录是否可写?

c++ - Qt QJsonObjects - 列表比一层更深?

c++ - 在传出的 UDP 数据包上设置 TTL?

c++ - 将耦合类拆分为单独的 header