男女做爽爽爽网站-男女做羞羞高清-男女做爰高清无遮挡免费视频-男女做爰猛烈-男女做爰猛烈吃奶啪啪喷水网站-内射白浆一区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#徹底關閉Windows系統代碼,不用shutdown命令

admin
2025年5月14日 1:5 本文熱度 132

?以下是使用C#調用Windows API實現徹底關閉Windows系統的代碼方案(不依賴 shutdown 命令):

方案一:直接調用 ExitWindowsEx  API(需管理員權限)

using System;

using System.Runtime.InteropServices;


public class SystemShutdown

{

    // 導入Windows API函數

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

    private static extern bool ExitWindowsEx(uint uFlags, uint dwReason);


    // 常量定義

    private const uint EWX_SHUTDOWN = 0x00000001; // 常規關機

    private const uint EWX_POWEROFF = 0x00000008; // 關閉電源(若支持)

    private const uint EWX_FORCE = 0x00000004; // 強制終止進程


    public static void Shutdown()

    {

        // 組合標志:強制關機并關閉電源

        uint flags = EWX_SHUTDOWN | EWX_POWEROFF | EWX_FORCE;

        bool success = ExitWindowsEx(flags, 0);

        

        if (!success)

        {

            int errorCode = Marshal.GetLastWin32Error();

            throw new System.ComponentModel.Win32Exception(errorCode, "關機失敗");

        }

    }

} 

方案二:通過調整權限后調用API(更安全)

若上述方案因權限問題失敗,需先獲取系統權限:

using System;

using System.Runtime.InteropServices;


public class AdvancedShutdown

{

    [StructLayout(LayoutKind.Sequential, Pack = 1)]

    private struct TokPriv1Luid

    {

        public int Count;

        public long Luid;

        public int Attr;

    }


    // 導入權限相關API

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

    private static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);

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

    private static extern bool LookupPrivilegeValueA(string host, string name, ref long pluid);

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

    private static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);

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

    private static extern bool ExitWindowsEx(int flg, int rea);


    // 權限常量

    private const int SE_PRIVILEGE_ENABLED = 0x00000002;

    private const int TOKEN_QUERY = 0x00000008;

    private const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;

    private const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";


    public static void ForceShutdown()

    {

        IntPtr hToken = IntPtr.Zero;

        TokPriv1Luid tp = new TokPriv1Luid { Count = 1, Attr = SE_PRIVILEGE_ENABLED };


        // 獲取當前進程令牌并調整權限

        OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref hToken);

        LookupPrivilegeValueA(null, SE_SHUTDOWN_NAME, ref tp.Luid);

        AdjustTokenPrivileges(hToken, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);


        // 執行強制關機(組合多個標志)

        ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE | EWX_POWEROFF, 0);

    }


    [DllImport("kernel32.dll")]

    private static extern IntPtr GetCurrentProcess();

}

關鍵說明

權限要求

必須以管理員身份運行程序,可通過以下任一方式實現:

在項目中添加 app.manifest 文件,設置:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

運行時檢查權限并提示用戶(示例代碼見1)。

參數選擇

 EWX_FORCE :強制終止未響應程序,但可能導致數據丟失。

 EWX_POWEROFF :物理關閉電源(需硬件支持)8。

若需重啟,可改用 EWX_REBOOT 標志822。

錯誤處理

通過 Marshal.GetLastWin32Error() 獲取錯誤代碼1。

常見錯誤: ERROR_SHUTDOWN_IN_PROGRESS (5)表示已有關機任務。

測試調用

class Program

{

    static void Main()

    {

        try

        {

            AdvancedShutdown.ForceShutdown();

            Console.WriteLine("關機指令已發送");

        }

        catch (Exception ex)

        {

            Console.WriteLine($"錯誤:{ex.Message}");

        }

    }

}、?

注意事項

數據安全:強制關機可能導致未保存數據丟失,建議關鍵應用先觸發保存邏輯。

系統兼容性:代碼適用于Windows系統,不同版本需測試API行為差異。

替代方案:若需延遲關機,仍建議使用 shutdown.exe 命令(但用戶要求禁用)。


該文章在 2025/5/14 8:54:39 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 激情综合网婷婷 | 久久婷婷秘精品果冻传媒 | 99热热久久 | 免费看片亚洲 | 欧美精品久久人妻无码 | 日本一本二本三区无码 | 精品伊人久久大线蕉色首页 | 国产又大又粗又硬的A片 | 欧美精品一区二区少妇免费A片 | 国产喷潮视频在线播放 | 国产精品视频在线 夜间国产热门在线 | 日本久久久久亚洲中字幕 | 天天色影站| 永久免费aⅴ无码网站在线观看 | 亚洲欧美综合在线天堂 | 色视频在线一区二区三区 | 欧美日韩国产一区图片 | 爱久久AV一区二区三区色欲 | 日本亚洲色图 | 国产精品成人va日韩视频一区二区 | 蜜桃日本免费看MV免费版 | 午夜一区二区在线观看 | 2024久热爱精品视频在线观看 | 欧美做爰免费大片视频 | 亚洲日本欧美在线 | 欧美成人亚洲午夜 | 亚洲欧美日韩一区二区三区不卡 | 精品人妻在线中文字幕 | 精品国产福利在线观看网址2022 | 粉嫩大胆色噜噜嚕 | yw193国产在线观看 | 精品国产VA久久久久久久冰 | 人妻丰满精品一区二区A片 人久人久人久污污污精品国产 | 久久久无码精品亚洲日韩18 | 国内卡一卡二卡三免费网站 | 91丝袜在线播放 | 無码一区中文字幕少妇熟女网站 | 精品无码三级在线观看视频 | 国产亚洲第一伦理第一区 | 欧美日韩一区二区三区四 | 日本最新免费二区三区 |