LocalSystem 以外のユーザー アカウントで Windows サービスを実行しています。ユーザーがmydomain\svcUserであるとします。
サービスは、 Process.Start(...)を使用して新しいプロセスPを生成します。プロセス P は、ユーザーmydomain\procUserで定義された既定の Outlook プロファイルを使用します。正常に動作します。
ここで、同じプロセスPを新しいユーザーの下で生成する必要があります: mydomain\procUserは、基本的に mydomain \ svcUserと同じ権限を持ちます。
LogonUser でトークンを取得した後、さまざまな方法で CreateProcessAsUser を使用しようとしましたが、うまくいきません。
ここで、プロセスのログオン ユーザーをmydomain\procUserに変更すると、生成されたプロセスPには、適切に動作するために必要なすべての権限と環境が含まれます。
LogonUser と CreateProcessAsUser に渡されるパラメーターを組み合わせて、 mydomain\svcUserの下でサービスを実行し続けることができますが、生成されたプロセスPがmydomain\procUserの下で適切に動作するようにする方法については、かなり迷っています。
このリンクは非常に役立ちますが、これは優れたガイドライン記事にすぎません。成功は、 LogonUserおよびCreateProcessAsUserを呼び出すときにフラグやその他のものを使用する方法に依存します。