複数のコンソール アプリケーションを起動するように設計された Windows サービスがあります。コンソール アプリケーションは、ファイル システム操作だけでなく、物理ログ ファイルにも書き込みます。
サービスがコンソールを起動すると、コンソールはファイル システムにアクセスできず、ログ ファイルには何も表示されません。
実行可能ファイルをダブルクリックしてコンソールを手動で起動すると、ログ ファイルへの書き込みに問題はありません。
ローカル システム、ローカル サービス、ネットワーク サービス、ローカル管理者アカウント、さらには自分のログイン資格情報でサービスを実行してみました。
これは、プロセスを起動するコードです。
Process p = new Process();
p.StartInfo.FileName = agent.AgentLocation; /// Physical path to executable
p.StartInfo.CreateNoWindow = true;
p.StartInfo.ErrorDialog = false;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
p.Start();