我有一個問題,我一直在尋找兩件事必須一起去,通過作爲管理員運行一個過程Createprocess()
並獲得輸出。C++作爲管理員createprocess並得到它的輸出
當我Google如何以CreateProcess()
作爲管理員時,我得到人們回覆使用shellexecute
。我去shellexecute
,而我在那裏,shellexecute不輸出在控制檯(進程)上運行的東西。
我再次谷歌我怎麼得到與shellexecute進程的輸出,我得到答案,說你不能用shellexecute做,使用createprocess,所以我去createprocess。我正在努力將我在做的事情與shellexecute轉換爲創建過程。
我在做什麼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);
此代碼在一個方法中運行,它的作用是添加一個防火牆規則來打開一個端口以阻止連接。它工作的很好,問題是我不知道這個過程是否成功,而不是真正的。所以我需要輸出。
你好,你能找到解決你這個問題的辦法嗎? –