C++使用當(dāng)前進(jìn)程關(guān)閉系統(tǒng)的實(shí)現(xiàn)方法

字號:

BOOL OpenProcessToken(
    HANDLE ProcessHandle, // handle to process
    DWORD DesiredAccess, // desired access to process
    PHANDLE TokenHandle // pointer to handle of open access token
    );
    //GetCurrentProcess()
    TOKEN_PRIVILEGES tp;
    HANDLE hToken;
    OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken )
    LUID luid;
    LookupPrivilegeValue(MachineName, SE_SHUTDOWN_NAME, &luid)
    tp.PrivilegeCount = 1;
    tp.Privileges[0].Luid = luid;
    tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(TOKEN_PRIVILEGES),NULL, NULL ); //到這里,是取得權(quán)限///
    ExitWindowsEx(EWX_POWEROFF,EWX_FORCE);