procedure Tfrmweb.windowsexitorreboot(flag: Integer);  //关机、重起、关闭应用程序
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;
     case flag of
     0 :
     begin
       ExitWindowsEx(EWX_POWEROFF,0);//关机
     end ;
     1 :
     begin
       ExitWindowsEx(EWX_REBOOT,0);//重器
     end ;
     2 :
     begin
        try
           close ;
        except
           Application.Terminate ;
        end ;
     end ;
     end ;
end;