想用vitsa上的服务在指定的Session上建立一个进程。
思路是,把服务自己的Token复制一份,然后把复制得到的hTokenDup的Session设置为1。
但是发现一个问题,请求各位高手指教:
在Xp下,如果没有设置hTokenDup的Session,新建的进程运行在服务的同一个Session下。但是Vista下却不行,进程新建不了,GetLastError()返回的错误码是5(Access Denied)。大致的代码如下:请朋友们看看到底是什么问题,先谢谢了!
    HANDLE hCurrentProcess=GetCurrentProcess();
    HANDLE hToken;
    HANDLE hTokenDup;
    OpenProcessToken(hCurrentProcess,TOKEN_ALL_ACCESS,&hToken);
    SECURITY_ATTRIBUTES sa;
    sa.nLength = sizeof(sa);
    sa.bInheritHandle = true;
    sa.lpSecurityDescriptor = NULL;    DuplicateTokenEx(hToken,MAXIMUM_ALLOWED,&sa,SecurityIdentification, TokenPrimary, &hTokenDup);    STARTUPINFO si;
    PROCESS_INFORMATION pi;    ZeroMemory(&si, sizeof(STARTUPINFO));
    ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
    si.cb = sizeof(STARTUPINFO);
    CreateProcessAsUser(
        hToken,
        tcPath,//module path&name
        NULL,//tcCommand1,   // Command line. 
        NULL,
        NULL,
        FALSE,
        NORMAL_PRIORITY_CLASS,
        NULL,//pEnv,
        NULL,
        &si,
        &pi );