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

Вниз

Выключение компа из-под Win2000 Adv Serv   Найти похожие ветки 

 
AlexPro_   (2003-03-14 17:21) [0]

Как выключить комп программно?
Этот код почему-то неработает.

procedure TForm1.Button1Click(Sender: TObject);
var
hToken : THandle;
tkp, ptkp : TTokenPrivileges;
i : dword;
begin
{ Get a token for this process. }
OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
{ Get the LUID for the shutdown privilege. }
LookupPrivilegeValue("","SE_SHUTDOWN_NAME", 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,ptkp,i);
{ Cannot test the return value of AdjustTokenPrivileges. }
GetLastError;
{ Shut down the system and force all applications to close. }
ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0);
end;
Что нетак?


 
ZZ   (2003-03-15 00:30) [1]

а как переводится
Cannot test the return value of AdjustTokenPrivileges
и что возвращает написанный GetLastError?

Если код правильный (т.е. скопирован из надежных источников и работает на несерверных NT"ях), то скорее всего нет прав на перезагрузку чтобы всякие личности-неадмины не перезагружали сервер


 
AlexPro_   (2003-03-18 10:42) [2]

Вот накопал, работает без вариантов!
Может еще кому понадобится.
var
TokenHandle: Cardinal;
RetLength: Cardinal;
TP: TTokenPrivileges;
begin
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,TokenHandle);
if LookupPrivilegeValue(nil, "SeShutdownPrivilege", TP.Privileges[0].Luid) then begin
TP.PrivilegeCount:=1;
TP.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
RetLength:=0;
If AdjustTokenPrivileges(TokenHandle, FALSE, TP, 0, nil, RetLength) then begin
If not SetProcessShutdownParameters($4FF, SHUTDOWN_NORETRY) then begin
// MessageBox(0, "Shutdown failed", nil, MB_OK or MB_ICONSTOP);
Form1.LogFile1.WriteLogFile("Shutdown failed");
Result:=False;
end else begin
Form1.LogFile1.WriteLogFile("System PowerOFF");
Result:=ExitWindowsEx(EWX_FORCE or EWX_SHUTDOWN, 0);
end;
exit;
end;



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

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

Наверх





Память: 0.44 MB
Время: 0.005 c
14-34547
Satirus
2003-04-21 18:52
2003.05.12
---|Ветка была без названия|---


3-34370
geg
2003-04-22 13:27
2003.05.12
DBgid+Подсчет строк?


4-34643
Andy BitOff
2003-03-09 20:19
2003.05.12
Имя ехе шника


11-34383
ODUVAN
2002-08-01 20:23
2003.05.12
Не могу поймать сообщения от мыши в SysTray!!!


14-34568
Askik
2003-04-23 15:45
2003.05.12
А кто знает, что за файл такой pagefile.sys ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский