我试图找到一种在我的C ++代码中以管理员身份运行CMD命令的方法。
即:
system("taskkill /im mygame.exe");
这不会起作用,它会弹出一个"错误:访问被拒绝"信息。 如果我以管理员身份运行Windows CMD并直接执行相同的命令,它将完美运行。
那么在C ++中自动使用CMD作为管理员的方法是什么?
我已经在这里阅读了其他一些帖子,但我无法直接与他们联系。
非常感谢。
答案 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\"");