サービス内から起動されるWindows実行可能ファイルには、指定されたユーザーの詳細を含むCreateProcessWithLogonW()を呼び出します。CreateProcessWithLogonW()の問題 - 同じユーザーでサブプロセスを起動する必要があります
これは正常に動作し、プロセスは正常に開始されます。ただし、このプロセスが他のプロセス自体を起動しようとすると、現在のところCreateProcess()を使用するだけですぐに終了します。これらはデスクトップアクセスが必要な実行ファイルです。
のCreateProcessのMicrosoftの記事()にまで読んだ後 - http://msdn.microsoft.com/en-us/library/ms682425(VS.85).aspx
私はなぜこれが起こっている見ることができると思うし、それはある程度理にかなっています。 CreateProcess()は、呼び出しプロセスがユーザーを偽装して親プロセス(この場合はローカルシステムアカウント)を使用することを認識します。もちろん、ローカルシステムアカウントで実行されるものには、必要なアクセス権がないため、起動されたプロセスが終了します。
私は以前、LogonUser()とCreateProcessAsUser()を使ってサービス内の最初の実行可能ファイルを起動していましたが、うまくいきました。しかし、私はこれをCreateProcessWithLogonW()に変更しなければなりませんでした。
誰でもこの解決策を知っていますか?私はWeb上の他の場所でこのことについて話しましたが、明確な解決策はありませんでした。それは、私はおそらく私はCreateProcessWithLogonW()で私はそれを使用して後で他のプロセスを起動することができますログオンしているユーザーのトークンが必要なようですね?しかし、私はこのトークンを取得する方法がない、これは現在のユーザーのために何らかの形で取り戻すことができますか?
任意の助けをいただければ幸いです、ありがとう:)
このオプションはすでに設定されています。サービス自体は問題ではなく、正しいユーザーの下で実行可能な罰金を起動しています。それは実行可能な試みが原因で問題を引き起こすプロセスです... –
興味深い。私はその許可が子プロセスによって継承されると思っていたでしょう。 –