私はC#で書かれたWindowsサービスを持っています。このサービスは、多数のMTAスレッドを生成します。これらの各スレッドでは、アウトプロセスCOMクラスがインスタンス化されます。現在のユーザーとして実行するようにサービスを設定しました(適切なログイン資格情報を追加します)。サービスを開始すると、タスクマネージャーから、ユーザーとして実行されているように見えます。サービスがローカルローミングユーザーディレクトリをチェックすると、期待どおりにユーザーディレクトリが返されます。アウトプロセスexeとして実行されているCOMクラスがこのチェックを実行すると、Windows \ System32 \ Config \ systemprofile \ AppData\Roamingにパスが返されます。
誰かがここで何が起こっているのか、さらに具体的には、サービスユーザーとして実行するためにプロセスサーバーから抜け出す方法に光を当てることができますか?タスクマネージャーをチェックインしましたが、タスクマネージャーによると、exeはサービスと同じユーザー(同じセッション)として実行されています。
OSが要因かどうかはわかりませんが、Vista 32(sp2)とWin7 64(sp1)の両方でこれを確認しました。