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

Вниз

Программная перезагрузка/выключение   Найти похожие ветки 

 
Graf   (2004-03-10 06:26) [0]

Привет всем!
Народ, объясните, как можно выполнить программную перезагрузку или выключение под WinXP. Почитал, что есть какие-то привилегии приложений и пр. но ничего конкретного в API нету. Подскажите, желательно с примерами.


 
Eagle-XK ©   (2004-03-10 10:39) [1]

Попробуй так:

if not ExitWindows(EX_RebootSystem, 0) then {ERROR};
ExitWindows(EX_RestartWindows, 0)

Аналогично и:
ExitWindowsEx(EWX_Logoff, 1)
ExitWindowsEx(EWX_Shutdown, 1)
ExitWindowsEx(EWX_Reboot, 1)
ExitWindowsEx(EWX_Force, 1)
ExitWindowsEx(EWX_Poweroff, 1)
ExitWindowsEx(EWX_Forceifhung, 1)


 
Graf   (2004-03-10 11:15) [2]

Во-во, я уже это пробовал. Только АПИ говорит, что надо установить токены привилегий, а где - фиг его знаить?


 
Игорь Шевченко ©   (2004-03-10 11:26) [3]


> Только АПИ говорит, что надо установить токены привилегий,
> а где - фиг его знаить?


FAQ


 
Александр1 ©   (2004-03-10 18:38) [4]

Перезагрузка!!!!!!!! WinNT
procedure reboot2;
var hToken : THandle;
   tkp : _TOKEN_PRIVILEGES;
   DUMMY : PTokenPrivileges;
   DummyRL : Cardinal;
begin
 DUMMY:=nil;
 if not OpenProcessToken(
   GetCurrentProcess(),
   TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
   hToken
 )
 then raise TShutdownEx.Create("OpenProcessToken failed");

 if (not LookupPrivilegeValue(nil, "SeShutdownPrivilege" , tkp.Privileges[0].Luid))
   then raise TShutdownEx.Create("LookupPrivilegeValue failed");

 tkp.PrivilegeCount := 1;
 tkp.Privileges[0].Attributes := $0002; //SE_PRIVILEGE_ENABLED = $00002

 AdjustTokenPrivileges(hToken, FALSE, tkp, 0, Dummy, DummyRL);

 if (GetLastError() <> ERROR_SUCCESS) then
   raise TShutdownEx.Create("AdjustTokenPrivileges failed");

 if (not ExitWindowsEx(EWX_REBOOT or EWX_FORCE, 0)) then
   raise TShutdownEx.Create("ExitWindowsEx failed");
end;


 
Александр1 ©   (2004-03-10 18:39) [5]

Выключение!!!!!!
procedure RebootSystem;
var
 handle_: THandle;
 n: DWORD;
 luid: TLargeInteger;
 priv: TOKEN_PRIVILEGES;
 ver: TOSVERSIONINFO;
begin
 ver.dwOSVersionInfoSize := Sizeof(ver);
 GetVersionEx(ver);
 if ver.dwPlatformId=VER_PLATFORM_WIN32_NT then
 begin
   if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, handle_) then
     if LookupPrivilegeValue(nil, "SeShutdownPrivilege", luid) then
     begin
       priv.PrivilegeCount := 1;
       priv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
       priv.Privileges[0].Luid := luid;
       AdjustTokenPrivileges(handle_, false, priv, 0, nil, n);
     end
     else
       writeln("Ошибка")
   else
     writeln("Ошибка ");
 end
 else
   writeln("Ошибка ");
 if not ExitWindowsEx(EWX_POWEROFF,1) then
   writeln("Ошибка");
end;


 
Александр1 ©   (2004-03-10 18:40) [6]

К стати примеры по этому вопросу есть на этом сайте!!!


 
Graf   (2004-03-11 05:58) [7]

Спасибо!!!!!!!


 
Александр1 ©   (2004-03-11 10:56) [8]

Graf - Пожалуйста!



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

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

Наверх





Память: 0.47 MB
Время: 0.03 c
14-1081687647
Thor
2004-04-11 16:47
2004.05.02
посоветуйте книгу по PHP.


1-1081938491
metalfan
2004-04-14 14:28
2004.05.02
"нажать" кнопу в чужом окне...


4-1077778464
Wontar
2004-02-26 09:54
2004.05.02
Как сделать чтобы нельзя было удалить процесс моей программы.


3-1081410101
gedd
2004-04-08 11:41
2004.05.02
Получить сумму по столбцу в ehlib?


14-1081871833
Knight
2004-04-13 19:57
2004.05.02
Что дают права администратора в сети?





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