如何在XP下重启或关闭计算机?

解决方案 »

  1.   

    先取得系统权限 再用一个AIP函数:ExitWindowsEX(EWX_REBOOT,0);//重启
                                   ExitWindowsEX(EWX_SHUTDOWN OR EWX_POWEROFF,0);//关机
      

  2.   


    取得权限
    procedure TForm1.shutdown;
    var
      hdlProcessHandle : Cardinal;
      hdlTokenHandle : Cardinal;
      tmpLuid : Int64;
     // tkpPrivilegeCount : Int64;
      tkp : TOKEN_PRIVILEGES;
      tkpNewButIgnored : TOKEN_PRIVILEGES;
      lBufferNeeded : Cardinal;
      Privilege : array[0..0] of _LUID_AND_ATTRIBUTES;begin
    hdlProcessHandle := GetCurrentProcess;
       OpenProcessToken(hdlProcessHandle,(TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY),
                        hdlTokenHandle);
       // Get the LUID for shutdown privilege.
       LookupPrivilegeValue('', 'SeShutdownPrivilege', tmpLuid);
       Privilege[0].Luid := tmpLuid;
       Privilege[0].Attributes := SE_PRIVILEGE_ENABLED;
       tkp.PrivilegeCount := 1;   // One privilege to set
       tkp.Privileges[0] := Privilege[0];
       // Enable the shutdown privilege in the access token of this
       // process.
       AdjustTokenPrivileges(hdlTokenHandle,False,tkp,Sizeof(tkpNewButIgnored),
                             tkpNewButIgnored,lBufferNeeded);end;
      

  3.   

    对symk0014(自然而然)表示感谢。