我有一个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();
检测窗口启动(或刚刚启动)的一种方法是使用System.Envinroment.TickCount,它返回自系统启动以来的毫秒数。您需要设置一个变量以表明您已阅读并执行了此操作,因为大约一个月后,由于空间不足以存储如此大的数字,该变量将再次转换为零。 (编辑-如前所述,它已签名并变为负数)
int result = Environment.TickCount
如果结果少于300,000,则窗口在最近5分钟内重新启动。显然,您需要计划并非所有计算机都能快速重新启动。
编辑现在我们知道问题是,基于上面的注释,onStart没有被调用...1)OP,您确定设备实际上正在关闭,而不仅仅是睡眠/休眠2)您是否检查过Windows事件日志以证明服务确实已停止并启动?
您可以在“服务”窗口中将服务设置为“自动”,并在开始时执行代码或启动计时器以在不久后启动。