using namespace std;
void Start(char *user,char *pass,char *path)
{
HANDLE Token=NULL;
if
(LogonUser(user,NULL,pass,LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,&Token))
{
printf
(
"Token Ok!\n"
);
STARTUPINFO StartupInfo;
memset(&StartupInfo,0,sizeof(StartupInfo));
StartupInfo.cb = sizeof(StartupInfo);
//StartupInfo
.lpDesktop =
"winsta0\\default"
;
PROCESS_INFORMATION ProcInfo;
memset(&ProcInfo,0,sizeof(ProcInfo));
if
(CreateProcessAsUser(Token,path,NULL, NULL, NULL, FALSE,NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE , NULL, NULL, &StartupInfo, &ProcInfo))
{
printf
(
"Start Ok!\n"
);
}
else
{
printf
(
"%d\n"
,GetLastError());
}
}
}
int main(int argc, char* argv[])
{
Start(
"ceshi"
,
"123456"
,
"C:\\Temps.exe"
);
system(
"pause"
);
return
0;
}