C# 代碼實現關機

AdvApi32.LookupPrivilegeValue(null, "SeShutdownPrivilege", out var lpLuid);

using var t = AdvApi32.SafeHTOKEN.FromThread(Kernel32.SafeHTHREAD.Current,
AdvApi32.TokenAccess.TOKEN_ADJUST_PRIVILEGES | AdvApi32.TokenAccess.TOKEN_QUERY);

var ptp = new AdvApi32.TOKEN_PRIVILEGES(luid:lpLuid, AdvApi32.PrivilegeAttributes.SE_PRIVILEGE_ENABLED);

AdvApi32.AdjustTokenPrivileges(t,false,ptp,out var old);
User32.ExitWindowsEx(User32.ExitWindowsFlags.EWX_POWEROFF | User32.ExitWindowsFlags.EWX_FORCE,
          SystemShutDownReason.SHTDN_REASON_MAJOR_NONE);

需要在nuget上下載:
Vanara.PInvoke.Kernel32
Vanara.PInvoke.User32
Vanara.PInvoke.Security

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章