Q&A

  • 윈도우 종료 및 OS
안녕하세요.
사용할 일이 있어서 팁을 본건데
98에선 잘 되는거 같은데
지금 개발환경은 윈도우 2천입니다.
윈도우2천이 nt 계열이라 그런지 로그오프밖에 안되는군요
강제종료를 해도 로그오프만 되고요.

1. 윈도우 2천에서 아래같이 할 순 없는지요?
아시는분 답변 부탁드립니다.

        0 : ExitWindowsEx(EWX_FORCE, 0); //강제종료
          1 : ExitWindowsEx(EWX_LOGOFF, 0); //LOG OFF
          2 : ExitWindowsEx(EWX_REBOOT, 0); //Shut Down & Reboot
           3 : ExitWindowsEx(EWX_POWEROFF,0); //Shut Down & Turn Off
          4 : ExitWindowsEx(EWX_SHUTDOWN, 0); //ShutsDown

2. 현재 사용중인 OS를 알고 싶습니다.
만약 2천에서1번같은게 모두 해결이 되면
아마도 OS를 확인해서 해야할것 같아서입니다.
그럼 좋은하루 되세요..
1  COMMENTS
  • Profile
    이현철 2002.06.20 20:34
    제가 현재 쓰고 있는 코드입니다.
    운영체제에 상관없이 종료 및 재부팅 할수 있습니다

    mode = reboot  or shutdown
        

    Procedure WindowsShutDown(Mode:String);
    var
      hProc : THandle;
      hToken : THandle;
      mLUID : Int64;
      mPriv : TTokenPrivileges;
      mNewPriv : TTokenPrivileges;
    begin
      hProc := GetCurrentProcess();
      OpenProcessToken(hProc, TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, hToken);
      LookupPrivilegeValue('', 'SeShutdownPrivilege', mLUID);
      mPriv.PrivilegeCount := 1;
      mPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
      mPriv.Privileges[0].Luid := mLUID;
      AdjustTokenPrivileges(
             hToken, False,
             mPriv, 4 + (12 * mPriv.PrivilegeCount),
             mNewPriv, mNewPriv.PrivilegeCount
             );

      if mode = 'reboot' then
         ExitWindowsEx(EWX_REBOOT, 0)
      else if mode = 'shutdown' then
         ExitWindowsEx(EWX_SHUTDOWN, 0);
    end;