我写了一个程序,要我的机器在半夜的时候定时关机。
   我使用了ExitWindows() 和ExitWindowsEx()
   这两个函数,可是我的机器只是被注销,而没有被关闭。我尝试了所有的参数值,可是都不行。我用的操作系统是:windows 2000 ser 和windows2000 per
   
    顺便问一下:以前我搞到了一个程序c++builder写的,这个程序只要你是以administrator登陆对方的机器(网上邻居),这个程序就可以关闭对方的机器。但是我找不到这个程序了。本来这个程序就可以把我上面的问题搞定。
    我还记得那个程序的步骤:
    第一步:取得对方机器的权限。
    第二步:向对方机器发送关机指令。windows API中有这么几个函数。可是我忘记了。大家帮我想想。不胜感激。

解决方案 »

  1.   

    ExitWindowsEx(EWX_POWEROFF,8); //關閉係統並關閉電源
      

  2.   

    procedure TForm1.AdjustToken;
    var
      hdlProcessHandle : Cardinal;
      hdlTokenHandle   : Cardinal;
      tmpLuid          : 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;
    关机:
        AdjustToken;
        ExitWindowsEx(EWX_POWEROFF, 0);