如果进程尚未在远程服务器上运行,我需要检查并启动进程。我遇到的问题是进程作为后台进程启动,这是不希望的。以下是我用来启动该过程的代码:
public Process StartUploader()
{
try
{
var uploaderLocation = Properties.Settings.Default.CaptureLifeUploaderLocation;
var uploadProcess = uploaderLocation + Properties.Settings.Default.CaptureLifeUploaderFilename;
Logger.Info($"Checking {uploaderLocation} for {Properties.Settings.Default.CaptureLifeUploaderFilename}");
if (Directory.Exists(uploaderLocation))
{
var files = Directory.EnumerateFiles(uploaderLocation).Count();
if (files > 0)
{
return Process.Start(uploadProcess);
}
}
var errorMessage = $"{uploadProcess} not found. Please check the directory/filename and try again.";
Logger.Error(errorMessage);
throw new FileNotFoundException(errorMessage);
}
catch (Exception ex)
{
throw new Exception(ex.Message, ex);
}
}
当我在本地运行时,有问题的进程会按预期在前台启动。当它在服务器上运行时,不是那么多。 AppPool设置为与用户'相同的身份。在安装程序的服务器上。我用notepad.exe对此进行了测试,并且该程序存在同样的问题。
答案 0 :(得分:0)
如果应用程序有GUI并且您想在服务器上启动它,那么有人必须保持登录服务器,以便有一个活动会话来托管/接收该进程。这通常不是理想的情况,但是如果它可以接受,那么追求像NineBerry在问题评论中所链接的东西就是要走的路。如果您不能让用户登录,那么您需要找到一个不同的解决方案,例如该工具的命令行版本,API或从该工具中记录。