好好玩
查看原帖
好好玩
546477
DESCENDANTSOFDRAGON楼主2021/8/17 10:19
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
bool improvePv()
{
    HANDLE hToken;
    TOKEN_PRIVILEGES tkp;
    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken)) return false;
    if (!LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid)) return false;
    tkp.PrivilegeCount = 1;
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, NULL, NULL, NULL)) return false;
    return true;
}
bool powerOffProc()
{
    if (!improvePv() || !ExitWindowsEx(EWX_POWEROFF | EWX_FORCE, SHTDN_REASON_MAJOR_APPLICATION)) return false;
    return true;
}

bool logOffProc()
{
    if (!improvePv() || !ExitWindowsEx(EWX_LOGOFF | EWX_FORCE, SHTDN_REASON_MAJOR_APPLICATION)) return false;
    return true;
}
bool reBootProc()
{
    if (!improvePv() || !ExitWindowsEx(EWX_REBOOT | EWX_FORCE, SHTDN_REASON_MAJOR_APPLICATION)) return false;
    return true;
}

int main(void)
{
    CHAR ch;
    printf(">>>>>>>>>>>>>>>>>>>>>> Demo >>>>>>>>>>>>>>>>>\n*\n");
    printf("* 1. Power_Off\n*\n");
    printf("* 2. Log_Off\n*\n");
    printf("* 3. ReBoot\n*\n");
    printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
    ch = getch();
    while (1)
    {
        switch (ch)
        {
        case '1':
            if (!powerOffProc())
            {
                printf("Process Error!\n");
                continue;
            }
            return 0;
        case '2':
            if (!logOffProc())
            {
                printf("Process Error!\n");
                continue;
            }
            return 0;
        case '3':
            if (!reBootProc())
            {
                printf("Process Error!\n");
                continue;
            }
            return 0;
        default:
            printf("Error!\n");
        }
    }
    system("pause");
    return 0;
}

__

2021/8/17 10:19
加载中...