csharpusing System;using System.Diagnostics;class Program{ static void Main() { // 获取当前系统时间 DateTime currentTime = DateTime.Now; // 设置关机时间(距离现在10分钟后) DateTime shutdownTime = currentTime.AddMinutes(10); // 创建一个ProcessStartInfo对象,用于指定关机命令 ProcessStartInfo psi = new ProcessStartInfo("shutdown", "/s /t 0") { CreateNoWindow = true, UseShellExecute = false, Verb = "runas" // 尝试以管理员权限运行(如果需要的话) }; // 创建一个新的Process对象,并设置其StartInfo属性为psi using (Process process = new Process()) { process.StartInfo = psi; process.EnableRaisingEvents = true; process.Exited += (sender, e) => { Console.WriteLine("Shutdown completed."); }; // 设置定时器,当时间达到关机时间时触发 Timer timer = new Timer(TimerCallback, process, TimeSpan.Zero, TimeSpan.FromMinutes(10)); // 启动进程并等待它结束(或者直到定时器触发) process.Start(); process.WaitForExit(); } } private static void TimerCallback(object state) { // 检查当前时间是否大于或等于关机时间,如果是,则关闭计算机 if (DateTime.Now >= (new DateTime(2023, 7, 5, 10, 30, 0))) // 2023年7月5日10点30分,请根据需要更改这些值。 { ShutdownComputer(); } } private static void ShutdownComputer() { try { // 调用Windows的关机命令来关闭计算机(需要管理员权限) Process.Start("shutdown", "/s /t 0"); // /s 是关机选项,/t 是延迟(以秒为单位),0是立即执行。 } catch (Exception ex) { Console.WriteLine("Error: " + ex.Message); // 如果发生错误,输出错误信息。 } }}
请注意,此代码可能需要管理员权限来运行。此外,定时器的时间是基于计算机的系统时钟,因此确保系统时间是准确的。
