C++ CreateProcessWithLogonW和mmc.exe
我写了一个程序,应该像RunAs一样工作。它工作正常,但我有一个问题。如果我想运行例如compmgmt.msc,那么我应该运行mmc.exe和compmgmt.msc作为它的参数。计算机管理将打开,但不是在我想要运行的用户下。它将在登录的用户名下运行。有人能告诉我这是为什么吗?我怎样才能纠正它?这是我的密码:C++ CreateProcessWithLogonW和mmc.exe,c++,winapi,runas,C++,Winapi,Runas,我写了一个程序,应该像RunAs一样工作。它工作正常,但我有一个问题。如果我想运行例如compmgmt.msc,那么我应该运行mmc.exe和compmgmt.msc作为它的参数。计算机管理将打开,但不是在我想要运行的用户下。它将在登录的用户名下运行。有人能告诉我这是为什么吗?我怎样才能纠正它?这是我的密码: void createproc( wchar_t * user, wchar_t * domain, wchar_t * pass
void createproc(
wchar_t * user,
wchar_t * domain,
wchar_t * pass,
wchar_t * applicationname)
{
int errorcode;
char cmd[Buf_Size];
STARTUPINFO StartInfo;
PROCESS_INFORMATION ProcInfo;
memset(&ProcInfo, 0, sizeof(ProcInfo));
memset(&StartInfo, 0 , sizeof(StartInfo));
StartInfo.cb = sizeof(StartInfo);
StartInfo.wShowWindow = SW_HIDE;
int bFuncRetn =
CreateProcessWithLogonW
(
user,
domain,
pass,
LOGON_NETCREDENTIALS_ONLY,
L"C:\\Windows\\System32\\mmc.exe", //applicationname,
L" compmgmt.msc",
CREATE_UNICODE_ENVIRONMENT,
NULL,
NULL,
(LPSTARTUPINFOW)&StartInfo,
&ProcInfo
);
errorcode = GetLastError();
if ( bFuncRetn == 0 )
{
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
printf("\nGetLastError :: %d CreateProcessWithLogonW Failed!",
errorcode);
printf("\nFor more information type :: Net Helpmsg %d",
errorcode);
getch();
exit(1);
}
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
}//createproc
谢谢你的帮助
kampi你看过在线MSDN文档了吗
请看一下示例代码。看起来很简单。你看过在线MSDN文档了吗
请看一下示例代码。看起来很简单。嗨!你说得对!这对我帮助很大。我也很早就找到了,但我没有那么小心。如果我使用带有配置文件的登录\u而不是登录\u NETCREDENTIALS\u,那么它可以正常工作!谢谢你的帮助!坎皮希!你说得对!这对我帮助很大。我也很早就找到了,但我没有那么小心。如果我使用带有配置文件的登录\u而不是登录\u NETCREDENTIALS\u,那么它可以正常工作!谢谢你的帮助!坎皮