在服务中用CreateProcessAsUser运行的外部EXE不能创建快捷方式

在服务程序中用CreateProcessAsUser运行的外部EXE不能创建桌面快捷方式和开始菜单栏快捷方式,其他目录的文件读写没问题,与桌面交互也没问题。
不是外部EXE的问题,直接手动运行外部EXE没出现这些问题。
以下为代码:

HANDLE hToken;  
    //创建进程快照  
    PROCESSENTRY32 pe32 = { 0 };  
    pe32.dwSize = sizeof(pe32);   
    HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);  
    if (hSnapShot!=0 && hSnapShot!=INVALID_HANDLE_VALUE)  
    {  
        BOOL bRet = Process32FirstW(hSnapShot,&pe32);  
        while(bRet)  
        {  
            if (_tcsicmp(pe32.szExeFile,L"Explorer.EXE") == 0)  
            {  
                HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,false,pe32.th32ProcessID);  
  
                if (hProcess!=NULL)  
                {  
                    BOOL flag = OpenProcessToken(hProcess,TOKEN_ALL_ACCESS,&hToken);  
                    CloseHandle(hProcess);  
                }  
                break;  
            }  
            bRet = Process32Next(hSnapShot,&pe32);  
        }  
        CloseHandle(hSnapShot);  
    }  
  
    STARTUPINFO si ={sizeof(si)};  
    PROCESS_INFORMATION pi;
    //TCHAR FileName[256] 外部EXE的完整路径
    BOOL bSuccess = CreateProcessAsUser(hToken,FileName,NULL,NULL,NULL,FALSE,NULL,NULL,NULL,&si,&pi);

请大神指教

阅读 4.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题