WindowsAPI关机、重启

#include "Windows.h"


//强制关闭计算机

bool systemShutDown()

{
    HANDLE hToken;

    TOKEN_PRIVILEGES tkp;


    //获取进程标志
    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {
        return false;

    }

    //获取关机特权的LUID
    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
    tkp.PrivilegeCount = 1;

    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;


    //获取这个进程的关机特权
    AdjustTokenPrivileges(hToken, false, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
    if (GetLastError() != ERROR_SUCCESS) {
        return false;

    }


    // 强制关闭计算机
    if ( !ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0)) {
        return false;
    }
    return true;
/*
    // 强制重启计算机
     if ( !ExitWindowsEx(EWX_REBOOT| EWX_FORCE, 0))
           return false;
     return true;
*/
 }
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页