服务程序以管理员身份启动一个进程,被启动进程要能与桌面交互
我有一个程序,直接运行则可以修改桌面,做了一个守护服务(发现进程不在就启动),在服务里面创建进程,这个时候进程是SYSTEM用户.用了CreateProcessAsUser()后,总算是Administrator用户了,可是桌面死活改不了,请大家帮忙!
//下面是服务程序中的代码
HANDLE hExp = GetProcessHandle("EXPLORER.EXE");
if(hExp == NULL)
return FALSE;
OpenProcessToken(hExp,TOKEN_ALL_ACCESS,&hToken);
if(hToken == NULL)
return FALSE;
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.lpDesktop = "winsta0\\default";
TCHAR szParameter[10] = {0};
if(CreateProcessAsUser(hToken,lpAppName,szParameter,NULL,
NULL,FALSE,CREATE_NO_WINDOW,NULL,NULL,&si,&pi))
{
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}