通常のユーザーとして実行されているアプリケーションと、ローカル システムとして実行されているサービスがあります。サービスが他の処理を行ったら、アプリケーションがサービスにアプリケーションを再度開始するように指示できるようにしたいと考えています。(したがって、サービスが「処理」を実行している間は、アプリケーションは実行されません。)サービスがアプリケーションを最初に開始したユーザーとしてアプリケーションを開始できるようにするには、ユーザー トークンが必要です。アプリケーションはサービスが終了する前にトークンをサービスに送信しますが、サービスが使用しようとしているときにトークン/ハンドルが無効です。(最初に行うことは、プライマリ トークンを取得するための DuplicateTokenEx です。)
ユーザー トークンは常に OpenProcessToken を呼び出したプロセスでのみ有効ですか?
これを行うことができる他の方法はありますか?ユーザーがlogonuserでアプリケーションに「ログオン」する必要はありません。それはばかげているでしょう。「explorer.exe」のプロセス ハンドルをアプリからサービスに渡すことができると思います。サービスはユーザー トークンを取得するために使用できますが、それには PROCESS DUP HANDLE アクセス権が必要です。私はその解決策に興奮していませんが、おそらくそれを行う方法ですか?