我有一个问题,我一直在寻找必须结合在一起的两件事,Createprocess()
以管理员身份运行一个进程并获得输出。
当我CreateProcess()
以管理员身份使用 Google 搜索时,我会让人们回复使用shellexecute
. 我去shellexecute
,当我在那里时,shellexecute 不输出控制台(进程)上运行的内容。
我再次谷歌如何使用 shellexecute 获得进程的输出,我得到的答案说你不能用 shellexecute 做到这一点,使用 createprocess,所以我去 createprocess。我正在努力将我正在使用的 shellexecute 转换为 createprocess。
我用 shellexecute 做的是我正在寻找的东西,以管理员身份运行。但没有输出。
这是我的 shellexecute 代码。
SHELLEXECUTEINFO si = {0};
si.cbSize = sizeof(SHELLEXECUTEINFO);
si.fMask = SEE_MASK_NOCLOSEPROCESS;
si.hwnd =NULL;
si.lpVerb = "runas";
si.lpFile = "netsh.exe";
si.lpParameters = "advfirewall firewall add rule name=\"dummy_rule\" action=allow protocol=TCP dir=in localport=3300";
si.lpDirectory=NULL;
si.nShow=SW_SHOW;
si.hInstApp =NULL;
ShellExecuteEx(&si);
WaitForSingleObject(si.hProcess, INFINITE);
CloseHandle(si.hProcess);
这段代码在一个方法中运行,它的作用是添加一个防火墙规则来为即将到来的连接打开一个端口。它工作正常,问题是我不知道进程是否成功,而不是 shellexecute。所以我需要输出。