使用管理员权限运行System()CMD命令

时间:2016-02-21 00:29:39

标签: c++ c++11

我试图找到一种在我的C ++代码中以管理员身份运行CMD命令的方法。

即:

system("taskkill /im mygame.exe");

这不会起作用,它会弹出一个"错误:访问被拒绝"信息。 如果我以管理员身份运行Windows CMD并直接执行相同的命令,它将完美运行。

那么在C ++中自动使用CMD作为管理员的方法是什么?

我已经在这里阅读了其他一些帖子,但我无法直接与他们联系。

非常感谢。

2 个答案:

答案 0 :(得分:1)

正确的答案是通过一个表示为requireAdministrator的帮助程序EXE启动。

你的助手程序是:

#include <process.h>
int main(int argc, char **argv, char **env) {
    return _spawnve(_P_WAIT, argv[1], argv + 1, env);
}

您将无法使用CreateProcess或system()启动自己的子进程。您必须使用以下命令启动帮助程序:

ShellExecute(hwnd, "helper.exe", "whatever you were going to pass to system()", NULL, NULL, 0);

其中hwnd是某个窗口(如果没有可见窗口,则传递NULL)。

参考1:How do I force my .NET application to run as administrator?

参考2:https://msdn.microsoft.com/en-us/library/bb756929.aspx

参考3:https://msdn.microsoft.com/en-us/library/windows/desktop/bb776886%28v=vs.85%29.aspx

答案 1 :(得分:-1)

通常的方法是使用runas

system("runas /user:Administrator@domain \"taskkill /im mygame.exe\"");