以上代码只是程序的一部分,请问关闭win2000应该用什么代码

解决方案 »

  1.   

    win2000的内核是NT的,首先要取的权限啊,用 AdjustTokenPrivileges函数
      

  2.   

    当然不一样啦,API有所不同嘛,98下很容易,但在2000下,本人已经成功了,很容易,你也可做
    点button2就可以了,自己用吧
    procedure TForm1.Button2Click(Sender: TObject);
    var
      VerInfo:TOSVersionInfo;
      hToken:THANDLE;
      tkp:TOKEN_PRIVILEGES;
      Nothing:Cardinal;
    begin
      VerInfo.dwOSVersionInfoSize:=SizeOf(VerInfo);
      GetVersionEx(VerInfo);
      if VerInfo.dwPlatformId=VER_PLATFORM_WIN32_NT then
      Begin
        OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken);
        LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid);
        tkp.PrivilegeCount:= 1;
        tkp.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
        AdjustTokenPrivileges(hToken, FALSE, tkp, 0,nil, Nothing);
      End;
        ExitWindowsEx(EWX_POWEROFF,0);//这句就是关机
      //ExitWindowsEx(EWX_REBOOT,0);
    end;