如何用ExitWindowsEx讓WIN2000自動關機并切斷電源,試過很多源碼,沒一個能做到,都要手動按電源
機器沒問題,我用開始關機都可以自動關機并切斷電源,但我用ExitWindowsEx卻總是在最后提示可以安全關機了,讓我按POWER鍵。
請有成功經驗的人回答,不要抄文章。我試過EWX_FORCE or EWX_SHUTDOWN  or EWX_REBOOT 各種組合如果用ExitWindowsEx不能達到目的,是否還有別的方法。
我設想過如果用開始關機可以,是不是可以調用開始關機,然后傳給它關機的參數讓它捃行。
或者用“rundll32.exe user.exe exitwindows”然后用shell調用。
上面那種方法可行,能否給詳細一點的說明。

解决方案 »

  1.   

    用以下代码试一下: HANDLE hToken;
    TOKEN_PRIVILEGES tkp;
    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
    ::MessageBox (NULL, TEXT("OpenProcessToken"),TEXT ("Error"),MB_ICONERROR); 
    // Get the LUID for the shutdown privilege. 
    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid); 
    tkp.PrivilegeCount = 1;  // one privilege to set    
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 
    // Get the shutdown privilege for this process. 
    AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); 
    // Cannot test the return value of AdjustTokenPrivileges. 
    if (GetLastError() != ERROR_SUCCESS) 
    ::MessageBox (NULL, TEXT("AdjustTokenPrivileges"),TEXT("Error"),MB_ICONERROR); 
    // Shut down the system and force all applications to close. 
    if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_POWEROFF, 0)) 
    ::MessageBox (NULL, TEXT("ExitWindowsEx"),TEXT("Error"),MB_ICONERROR);
      

  2.   

    我是用VB的,EWX_POWEROFF的值是多少啊,EWX_SHUTDOWN好像是1吧。
    我的主板電源沒問題,用開始關機都可以關機后自動關電源。最近看過文章說XP的關機是用shutdown.exe控制的,可是運行shutdown.exe還是不能斷電源,還是要手動關機。在2000和XP下都是如此。
      

  3.   

    这是因为2000和xp的针对硬件不是我们常用的这种电源,新买的机子在2000和xp下全都能关机,而我的286,486根本就什么都关不了机,换句话说,2000、xp根部就不是为以前的机子设计的。
      

  4.   

    補充一句,我已經用AdjustTokenPrivileges取得了關機權限。
    我下載了很多自稱能關機的程序源代碼,但沒一個能自動關電源的,都是出現“現在你可以安全關機”的畫面。
    如果不能關電源,那自動關機的程序意義何在?
      

  5.   

    回复人: zhangxhsj(泡泡龙) (  ) 信誉:100  2002-08-31 13:23:00  得分:0  
     
     
      是否能够自动切断电源,我想与主板的设计有关系。我的机器就可以在关闭系统后自动切断电源。而有的机器就必须手动再按一下。
     
    我的意见和这一样,你的机子正常关机能关电源吗?
      

  6.   

    还需要在CMOS里进行电源管理的设置.
      

  7.   

    我自己写了个简单的关机程序,关机代码和上面差不多(参考msdn)在windows 2000 pro/server上可以自动关机,但是有个问题:
    在IBM NF5100/WIN2000 SERVER上成功次数很少,但在其他机器上可以关机。很麻烦,不只问题到底在哪里