![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как программно ребутнуть компьютер [D6, Win2k]
alexus © (2003-05-07 19:03:00)Любезнейшие мастера, не подскажете функцию, которая позволяет ребутнуть комп?
Спасибо
Иван (2003-05-08 11:40:00) [1]
Procedure RebootWindows;
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 ShowError("OpenProcessToken failed");
if Not LookupPrivilegeValue(nil, "SeShutdownPrivilege" , tkp.Privileges[0].Luid) then ShowError("LookupPrivilegeValue failed");
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := $0002;
AdjustTokenPrivileges(hToken, FALSE, tkp, 0, Dummy, DummyRL);
if GetLastError() <> ERROR_SUCCESS then ShowError("AdjustTokenPrivileges failed");
if Not ExitWindowsEx(EWX_REBOOT, 0) then ShowError("ExitWindowsEx failed");
End; {- RebootWindows -}
Morfein (2003-05-07 20:33:00) [2]ExitWindowsEx(EWX_REBOOT + EWX_FORCE, 0);
vuk (2003-05-07 19:42:00) [3]InitiateSystemShutdown