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

时间:2013-12-06 15:50:57

标签: 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;
}

1 个答案:

答案 0 :(得分:4)

您可以在可执行文件清单文件中设置requireAdmin,然后这将请求将您的应用程序提升为admin,用户可能必须提供其他凭据(如run as)。 它会在资源管理器中对您的应用程序图标设置一点屏蔽。

在Visual Studio中

  • 选择项目中的属性
  • 然后打开“配置属性”
  • 然后打开链接器
  • 选择“清单文件”
  • 并将“UAC执行级别”修改为requireAdministrator

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