The*_*lTy 6 .net c# process windows-server-2008
由 Windows 服务启动的程序有问题。
流程是
Restart()
Restart()
除了一个客户站点外,这一切都很完美
在一个站点上,第一个Restart()
有效,但第二个总是抛出异常。
System.ComponentModel.Win32Exception (0x80004005): System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start() at UpdateCompanionService.Program.Restart() 不支持这样的接口
它是一个 WS2008 标准服务器。
public static void Restart()
{
try
{
var procPath = Path.Combine(Config.UpdateCompanionDirectory, "UpdateCompanionService.exe");
Logger.Debug("Starting procecss {0}", procPath);
var proc = new Process
{
StartInfo = {FileName = procPath, WorkingDirectory = Config.UpdateCompanionDirectory, Arguments = "/noupdate", UseShellExecute = true}
};
proc.Start();
Environment.Exit(-1);
}
catch (Exception e)
{
Logger.Fatal("Error restarting update companion", e);
}
}
Run Code Online (Sandbox Code Playgroud)
你可以尝试在你的代码中设置UseShellExecute = false
。
我记得很久以前我自己的一些问题,我什至重新编译了原始的.NET框架代码,发现设置这个标志使用了完全不同的启动方法。
UseShellExecute = true
对我来说,你的情况似乎不需要。
如果这不起作用,您应该检查安全上下文/GPO 设置,例如“此服务是否以系统或(域)用户身份运行?”
还要确保您的新 EXE 以及所有附加组件在您尝试重新启动时已“准备就绪”(也许您使用了未完成的后台线程)。