私は、特に管理者権限でセカンダリ プログラムを開始する必要がある Windows サービスを作成しています。セカンダリプログラムをロードしようとするときを除いて、サービスは完璧に機能します. 以下はコードです。「Update Found」がログにエコーされますが、奇妙な部分は「Exception」または exception.tostring() ではないことです。この新しいコードを下に貼り付けなくても、サービスを開始、実行、および停止できます。サービスから別のプログラムを起動しようとすると、サービスはすぐに「更新が見つかりました」とエコーし、その直後にservices.mscでサービスが「サービスが停止しました」と表示されることに気付きます。
2 番目のプログラムを起動すると、Windows C# サービスがクラッシュする理由がわかる人はいますか?
System.IO.File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + "log.txt", "Update Found\r\n");
try
{
System.Diagnostics.Process processss = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfooo = new System.Diagnostics.ProcessStartInfo();
startInfooo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfooo.FileName = "cmd.exe";
startInfooo.Arguments = "/C " + AppDomain.CurrentDomain.BaseDirectory + "Manager.exe";
processss.StartInfo = startInfooo;
processss.Start();
System.Threading.Thread.Sleep(10000);
}
catch (Exception ex)
{
System.IO.File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + "log.txt", "Exception");
System.IO.File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + "log.txt",ex.ToString());
}