Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

ExitWindowsEx(...   Найти похожие ветки 

 
Коля   (2003-12-30 11:41) [0]

Мне нужна функция выключения компьютера под Win2000
В Win98 была ф. ExitWindows(EWX_POWEROFF, 0 );
но она лишь перезагружала. Есть также:
ExitWindowsEx(EWX_REBOOT,0);
ExitWindowsEx(EWX_POWEROFF,0);
но там нужны привелегии для Win2000.
 А вообще мне это нужно, т.к. на серваке (который под Win2000) монитор сел совсем и я хочу написать прогу, выключающую его с другого (рабочего) компа локальной сети. Может уже есть готовые программы или процедура. Подскажите пожалуйста..


 
Rik   (2003-12-30 13:37) [1]

AdjustTokenPrivileges?


 
Dimman1 ©   (2003-12-30 13:40) [2]

procedure TForm1.Shutdown;
var ph:THandle;
   tp,prevst:TTokenPrivileges;
   rl:DWORD;
begin
OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,ph);
LookupPrivilegeValue(Nil,"SeShutdownPrivilege",tp.Privileges[0].Luid);
tp.PrivilegeCount:=1;
tp.Privileges[0].Attributes:=2;
AdjustTokenPrivileges(ph,FALSE,tp,SizeOf(prevst),prevst,rl);
ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF or EWX_FORCE,0);
end;


 
Коля   (2003-12-30 13:43) [3]

Я тут покопался ещё в интернете и нашёл модуль:

unit shutdown;
interface
 procedure ForceShutdownNT;
 procedure ForceRebootNT;
 procedure ForcePowerOffNT;
implementation
uses windows;
procedure error(msg : string);
begin
 MessageBox(0, @msg[1], "Error", MB_ICONERROR or MB_OK);
end;
function GetShutdownPriv : boolean;
var
 hToken : THandle;
 tkp : TTokenPrivileges;
 ReturnLength : DWORD;
begin
 // Get a token for this process.
 if not OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then begin
     error("OpenProcessToken");
     Result := false;
     exit;
 end;
 // Get the LUID for the shutdown privilege.
 LookupPrivilegeValue(nil, "SeShutdownPrivilege", tkp.Privileges[0].Luid);
 tkp.PrivilegeCount := 1;  // one privilege to set
 tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
 // Get the shutdown privilege for this process.
 AdjustTokenPrivileges(hToken, FALSE, tkp, 0, nil, ReturnLength);
 // Cannot test the return value of AdjustTokenPrivileges.
 if (GetLastError <> ERROR_SUCCESS) then begin
    error("AdjustTokenPrivileges");
    Result := false;
    exit;
 end;
 Result := true;
end;
procedure ForceShutdownNT;
begin
 if GetShutdownPriv then
   if (ExitWindowsEx(EWX_LOGOFF or EWX_FORCE, 0)) then error("ExitWindowsEx");
end;
procedure ForcePowerOffNT;
begin
 if GetShutdownPriv then
   if (ExitWindowsEx(EWX_POWEROFF or EWX_FORCE, 0)) then error("ExitWindowsEx");
end;
procedure ForceRebootNT;
begin
 if GetShutdownPriv then
   if (ExitWindowsEx(EWX_REBOOT or EWX_FORCE, 0)) then error("ExitWindowsEx");
end;
end.


 
YuRock ©   (2003-12-30 13:45) [4]

> [2]
Да, но при чем здесь сервак? Ты же свой комп выключишь! Хотя, конечно, можно запустить эту прогу на удаленной машине.


 
YuRock ©   (2003-12-30 13:54) [5]

А вообще это делается так, как в [2], но вместо ExitWindowsEx() - InitiateSystemShutdown(), в которой первым параметром должно быть сетевое имя компа. Работает только на NT/2K/XP, причем если ты подлогинился к выключаемому компу с правами админа.


 
BestDen   (2004-02-09 23:28) [6]

Вставил я от [2] код, мой компилятор показывает следующую ошибку:
[Error] offer.pas(51): Ambiguous overloaded call to "AdjustTokenPrivileges"
Помогите решить проблемку... :)


 
DarkForest   (2004-02-17 00:37) [7]

Попробуй написать:
AdjustTokenPrivileges(ph,FALSE,tp,0,nil,rl);

В MSDN нарисовано так в примере кода выключения системы под WinXP.


 
Костя   (2004-02-21 09:41) [8]

Люди, вы не знаете что в XP вырубает комп,т.к. ExitWindowsEx что-то не работает...


 
DeadMeat ©   (2004-02-22 19:26) [9]


> [8] Костя   (21.02.04 09:41)


Нормально... Ты вообще читал что сверху написано...??



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.03 c
3-1080538686
WondeRu
2004-03-29 09:38
2004.04.25
DateTime in Update


6-1077359189
ProNix
2004-02-21 13:26
2004.04.25
TwebBrowser и фреймы


4-1077485242
Nick Denry
2004-02-23 00:27
2004.04.25
И снова Api. Суперклассинг.


14-1080735417
Rule
2004-03-31 16:16
2004.04.25
А ещё вопрос, посоветуйте компоненті по украшению внешнего вида


14-1080885987
Sergey_Masloff
2004-04-02 10:06
2004.04.25
Delphi и Win32 - прогнозы?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский