如何编程实现关机?

解决方案 »

  1.   

    exitWindowsEx(ewx_shutdown,1) 关机
    (0,0) 退出,然后以另外一个用户身份登陆
    (ewx_reboot,2)重启
    (ewx_logoff,0)退出/注销/以另外一个用户身份登陆
      

  2.   

    OSVERSIONINFO oi;
    oi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
    GetVersionEx(&oi);
    if (oi.dwPlatformId == VER_PLATFORM_WIN32_NT)
    {
    HANDLE handle;
    TOKEN_PRIVILEGES tkp;
    OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &handle);
    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);tkp.PrivilegeCount = 1;  // one privilege to set    
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 
     
    AdjustTokenPrivileges(handle, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
    }
    ::ExitWindowsEx(EWX_SHUTDOWN, 0);