2

サービスを使用して GUI アプリケーションを開始しようとしています。私はVS2012でサービスを開発し、Windows 7で実行しました。しかし、CreateProcessAsUser関数は、正常に返されてもアプリケーションを起動しません。以下は私のコードです:

PHANDLE hToken = NULL;
WTSQueryUserToken (WTSGetActiveConsoleSessionId (), hToken) ;

if( !CreateProcessAsUser( hToken,
    NULL,   // No module name (use command line)
    pPath,          // Command line
    NULL,           // Process handle not inheritable
    NULL,           // Thread handle not inheritable
    FALSE,          // Set handle inheritance to FALSE
    0,              // No creation flags
    NULL,           // Use parent's environment block
    NULL,           // Use parent's starting directory 
    &si,            // Pointer to STARTUPINFO structure
    &pi )           // Pointer to PROCESS_INFORMATION structure
 )

問題は何ですか?

ありがとう、KM。

4

3 に答える 3

0

WTSQueryUserTokenWindows 7で使用中に同様の問題に直面しましたが、同じ機能がWindows 10で機能しました。

そこで、関数explorer.exeと呼ばれるトークンを取得しました。DuplicateTokenExstartupinfo 構造体に対応する値を設定します

si.lpDesktop = "winsta0\\default";
si.wShowWindow = SW_SHOWNORMAL;
si.dwFlags = STARTF_USESHOWWINDOW;

そして呼ばれたcreateprocessasuser

于 2019-11-21T13:31:05.783 に答える