关闭windows
   ExitWindowsEx(EWX_SHUTDOWN,0)
重启windows
   ExitWindows(EWX_REBOOT,0)

解决方案 »

  1.   

    呵呵,这个老方法是win9x only。
    在win2000/xp之下,比较麻烦。
    首先要取得当前进程的权限,然后修改权限,最后才能使用这函数关机或者重起。
    我自己编写过一个这样的程序(delphi),可惜代码在单位里。如果大家需要,周一我可以贴上来。
      

  2.   


      在20000下关机不象在98下直接调用ExitWindows函数就成,你首先要用OpenProcessToken函数打开与进程相关的访问信令然后再使用ExitWindow函数退出Win2000.以下这段程序可供参考:
    var
    hToken :THandle ;
    tkp :TOKEN_PRIVILEGES ;
    otkp :TOKEN_PRIVILEGES ;
    dwLen :Dword ;
    begin
    if OpenProcessToken(GetCurrentProcess ,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY ,hToken) then
    begin
    LookupPrivilegeValue(Nil ,'SeShutdownPrivilege' ,tkp.PrivilegeValue[0].Luid) ; 
    tkp.PrivilegeCount := 1 ;
    tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; 
    AdjustTokenPrivileges(hToken ,False ,tkp ,sizeof(tkp) ,otkp,dwLen) ; 
    if (GetLastError() = ERROR_SUCCESS) then
    begin 
    ExitWindowsEx(EXW_POWEROFF ,0) ; //关机
     
    ExitWindowsEx(EWX_SHUTDOWN,0) ;//关闭windows ExitWindows(EWX_REBOOT,0) ;重启windows end ;
    end ;
    注销就
    ExitWindows(EWX_REBOOT,0) ;