안녕하세요.
사용할 일이 있어서 팁을 본건데
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를 확인해서 해야할것 같아서입니다.
그럼 좋은하루 되세요..
운영체제에 상관없이 종료 및 재부팅 할수 있습니다
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;