LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#实现Windows7/8/10/11系统强制重启代码

admin
2025年5月12日 20:46 本文热度 71

以下是使用C#实现强制重启Windows 11操作系统的代码示例,提供两种常见方法:

方法1:调用系统命令(推荐)

using System;

using System.Diagnostics;


public class SystemRebooter{

    public static void ForceReboot()

    {

        try

        {

            // 使用shutdown命令强制重启

            var psi = new ProcessStartInfo

            {

                FileName = "shutdown.exe",

                Arguments = "/r /f /t 0", // 立即强制重启

                UseShellExecute = false,

                CreateNoWindow = true

            };

            Process.Start(psi);

        }

        catch (System.ComponentModel.Win32Exception ex)

        {

            // 处理权限不足的情况

            Console.WriteLine($"需要管理员权限: {ex.Message}");

        }

    }

}


// 使用示例

SystemRebooter.ForceReboot();

方法2:使用Windows API(更底层)

using System;

using System.Runtime.InteropServices;


public class SystemRebooter{

    [DllImport("ntdll.dll", SetLastError = true)]

    private static extern int NtRaiseHardError(

        int ErrorStatus,

        int NumberOfParameters,

        int UnicodeStringParameterMask,

        IntPtr Parameters,

        int ValidResponseOption,

        out int Response);


    [DllImport("advapi32.dll", SetLastError = true)]

    private static extern bool InitiateSystemShutdownEx(

        string lpMachineName,

        string lpMessage,

        uint dwTimeout,

        bool bForceAppsClosed,

        bool bRebootAfterShutdown,

        uint dwReason);


    public static void ForceReboot()

    {

        // 方法1: 通过系统关机API

        InitiateSystemShutdownEx(

            null,           // 本机

            "强制重启",     // 显示消息

            0,              // 立即执行

            true,           // 强制关闭程序

            true,           // 重启

            0x80000000);   // 原因代码


        // 方法2: 通过硬错误触发(仅作技术演示)

        // int response;

        // NtRaiseHardError(0xC000021C, 0, 0, IntPtr.Zero, 6, out response);

    }

}

    

// 使用示例

SystemRebooter.ForceReboot();

注意事项:

  1. 管理员权限:两种方法都需要以管理员身份运行程序

    • 在Visual Studio中:右键项目 → 添加 → 新建项 → 应用程序清单文件 → 修改

    • ​<requestedExecutionLevel level="requireAdministrator"/>

    • 已编译的程序:右键exe → 属性 → 兼容性 → 勾选"以管理员身份运行"

  2. 数据丢失警告:强制重启不会保存未保存的工作,谨慎使用

  3. Windows版本:代码适用于Windows 7/8/10/11全系版本

  4. 安全软件拦截:部分安全软件可能会阻止强制重启操作

建议优先使用方法1,因为:

  • 代码更简洁

  • 直接调用系统原生命令

  • 兼容性更好

如果需要更底层的控制(如自定义关机原因代码),可以使用方法2中的API方式。实际开发中建议添加用户确认对话框和日志记录功能。


该文章在 2025/5/12 20:46:30 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved