一、C#实现windows系统重启、关机

实现原理,使用系统shutdown命令执行:

强制关机:

shutdown -s -f -t 0

强制重启:

shutdown -r -f -t 0

 

C#实现代码封装:

  public class ShutdownHelper
    {

        /// <summary>
        /// 到期时间
        /// </summary>
        public DateTime End { get; set; }

        public ShutdownHelper()
        {
            DateTime now = DateTime.Now;
            DateTime end = now.Date.AddDays(1).AddSeconds(-1);

            this.End = end;
        }
        public ShutdownHelper(DateTime time)
        {
            this.End = time;
        }


        //执行命令
        public void Exec(string str)
        {
            try
            {
                using (Process process = new Process())
                {
                    process.StartInfo.FileName = "cmd.exe";//调用cmd.exe程序
                    process.StartInfo.UseShellExecute = false;
                    process.StartInfo.RedirectStandardInput = true;//重定向标准输入
                    process.StartInfo.RedirectStandardOutput = true;//重定向标准输出
                    process.StartInfo.RedirectStandardError = true;//重定向标准出错
                    process.StartInfo.CreateNoWindow = true;//不显示黑窗口
                    process.Start();//开始调用执行
                    process.StandardInput.WriteLine(str + "&exit");//标准输入str + "&exit",相等于在cmd黑窗口输入str + "&exit"
                    process.StandardInput.AutoFlush = true;//刷新缓冲流,执行缓冲区的命令,相当于输入命令之后回车执行
                    process.WaitForExit();//等待退出
                    process.Close();//关闭进程
                }
            }
            catch
            {
            }
        }
        //执行关机操作
        public void Shutdown()
        {
            this.Exec("shutdown -s -f -t 0");
        }
        //执行重启操作
        public void Restart()
        {
            this.Exec("shutdown -r -f -t 0");
        }

        //取消任务
    }

 

二、关于shutdown命令详解:

C#实现控制Windows系统关机、重启和注销的方法:
shutdown命令的参数:

shutdown.exe -s:关机
shutdown.exe -r:关机并重启
shutdown.exe -l:注销当前用户

shutdown.exe -s -t 时间:设置关机倒计时
shutdown.exe -h:休眠
shutdown.exe -t 时间:设置关机倒计时。默认值是 30 秒。
shutdown.exe -a:取消关机
shutdown.exe -f:强行关闭应用程序而没有警告
shutdown.exe -m \计算机名:控制远程计算机
shutdown.exe -i:显示“远程关机”图形用户界面,但必须是Shutdown的第一个参数
shutdown.exe -c "消息内容":输入关机对话框中的消息内容
shutdown.exe -d [u][p]:xx:yy :列出系统关闭的原因代码:u 是用户代码 ,p 是一个计划的关闭代码 ,xx 是一个主要原因代码(小于 256 的正整数) ,yy 是一个次要原因代码(小于 65536 的正整数)

比如你的电脑要在12:00关机,可以选择“开始→运行”,输入“at 12:00 Shutdown -s",这样,到了12点电脑就会出现“系统关机”对话框,默认有30秒钟的倒计时并提示你保存工作。
如果你想以倒计时的方式关机,可以输入 “Shutdown.exe -s -t 3600",这里表示60分钟后自动关机,“3600"代表60分钟。
一键关机:
1、首先在桌面的空白处单击鼠标右键,新建一个“快捷方式”。
2、在创建快捷方式的“命令行”中输入以下的指令:
“shutdown –s –t 0 ”。(在windows98按此输入“C:windowsRUNDLL32.EXE user,ExitWindows”。)
3、按着鼠标选择“下一步”,在快捷方式的名称栏中输入“一键关机”或其他自己喜欢的名称。
4、之后,你就会在桌面见到一个名为“一键关机”的快捷方式图标,在该图标上单击鼠标右键,选择“属性”,再进入“快捷方式”页,然后在“快速键一栏内随便按选一个功能键(如F1-F12)。建议大家最好选一个平时不常用的功能键,最后按确定退出即可。

Windows系统通过一个名为shutdown.exe的程序来完成关机操作(位置Windows\System32下),一般情况下Windows系统的关机都可以由关机程序 shutdown.exe来实现的,关机的时候调用shutdown.exe。由此可知要阻止强行关机就是要取消对shutdown.exe的调用。

使用C#代码实现控制Windows系统关机、重启和注销的方法,使用.NET和C#.NET,我们可以对当前PC执行关机,重启,注销操作,
.NET Framework中,有一个命名空间System.Diagnostics具有所需的类和方法,从当前PC上运行.NET应用程序来执行这些操作 。一般使用System.Diagnostics.Process.Start()方法来启动shutdown.exe程序。

 

更多:

Win10操作系统,自带.Net Framework 框架版本

C# 程序设置开机启动(一)

C# 根据注册表获取当前用户的常用目录整理