[在使用c#服务启动系统时如何执行进程

问题描述 投票:-1回答:2

我有一个c#服务,我需要在设备启动时执行特定的进程。我如何使用C#做到这一点。我不知道如何检测Windows正在启动。

 System.Diagnostics.Process proc = new Process();
                            proc.StartInfo.FileName = fileName;
                            proc.StartInfo.Arguments = details["arguments"];
                            proc.StartInfo.Verb = "runas";      
                            proc.Start();
                            proc.WaitForExit();
windows service c# windows-services
2个回答
1
投票

检测窗口启动(或刚刚启动)的一种方法是使用System.Envinroment.TickCount,它返回自系统启动以来的毫秒数。您需要设置一个变量以表明您已阅读并执行了此操作,因为大约一个月后,由于空间不足以存储如此大的数字,该变量将再次转换为零。 (编辑-如前所述,它已签名并变为负数)

int result = Environment.TickCount 

如果结果少于300,000,则窗口在最近5分钟内重新启动。显然,您需要计划并非所有计算机都能快速重新启动。

编辑现在我们知道问题是,基于上面的注释,onStart没有被调用...1)OP,您确定设备实际上正在关闭,而不仅仅是睡眠/休眠2)您是否检查过Windows事件日志以证明服务确实已停止并启动?


1
投票

您可以在“服务”窗口中将服务设置为“自动”,并在开始时执行代码或启动计时器以在不久后启动。

© www.soinside.com 2019 - 2024. All rights reserved.