gpt4 book ai didi

c# - 是否可以从 windows 服务为当前控制台使用启动 winform

转载 作者:太空宇宙 更新时间:2023-11-03 16:34:57 25 4
gpt4 key购买 nike

我正在尝试创建一个 Windows 服务来监视和更新应用程序 (winform),如果它停止或未运行,应该启动它。但它应该以当前控制台用户身份运行该应用程序。我的问题是它以网络服务凭据启动表单,因此当前用户无法使用它。

     protected override void OnStart(string[] args)
{
if (!GetProcessList())
{
Process p = new Process();
p.EnableRaisingEvents = true;
p.Exited += new EventHandler(p_Exited);
StartProcces();

}
else
{
eventLog1.WriteEntry("Process is running");
}
}

void p_Exited(object sender, EventArgs e)
{
StartProcces();
}
static void StartProcces()
{
System.Diagnostics.ProcessStartInfo myProcess = new System.Diagnostics.ProcessStartInfo(@Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + "\\WmiMonClient.exe");
myProcess.WorkingDirectory = System.Reflection.Assembly.GetEntryAssembly().Location;

//set environment path
try
{
System.Diagnostics.Process.Start(myProcess);
}
catch (Exception ex)
{


}
}
private static bool GetProcessList()
{
bool proccesIsRunning = false;
Process[] processlist = Process.GetProcesses();

foreach (Process theprocess in processlist)
{
if (theprocess.ProcessName == "WmiMonClient.exe")
{
proccesIsRunning = true;
}
}
return proccesIsRunning;
}

protected override void OnStop()
{
}

最佳答案

解决此问题的一种方法可能是创建一个计划任务(使用 Windows 计划程序)来执行您上面的代码。如果是这样,它只会重新启动它。

这具有已经运行用户上下文的优势,而不必从 Windows 服务中考虑它。

关于c# - 是否可以从 windows 服务为当前控制台使用启动 winform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9397326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com