如果我作为网络服务运行,如何使用提供的参数启动可执行文件?我尝试在我的程序(作为网络服务运行)中使用 ShellExecuteEx:
try
{
DWORD dwErr;
TCHAR bufProgName[1000] = _T("");
TCHAR bufParameters[1000] = _T("");
::lstrcat(bufProgName,_T("C:\\NotMyFault\\x86\\NotMyFault.exe"));
::lstrcat(bufParameters,_T(" -help"));
SHELLEXECUTEINFO ShExecInfo;
ZeroMemory(&ShExecInfo,sizeof(ShExecInfo));
ShExecInfo.cbSize=sizeof(ShExecInfo);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = bufProgName;
ShExecInfo.lpParameters = bufParameters;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOWNORMAL;
ShExecInfo.hInstApp = NULL;
int res = ShellExecuteEx(&ShExecInfo);
if(!res)
{
dwErr = GetLastError();
return -1;
}
}
catch(...)
{
std::cout<<"ShellFail: " << dwError;
return -1;
}
但这所做的只是启动 NotMyFault.exe 作为用户网络服务运行(我从任务管理器中看到),但它没有提供帮助。其他参数(“-crash”)也是如此。
我知道这是仓促编写的代码,但我需要看看作为网络服务运行的进程(如我的)是否可以成功地做到这一点。当我以另一个用户身份运行它时(通过双击可执行文件),它似乎工作得很好。