Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как перезагрузить NT


aleman ©   (2002-11-18 19:20:00) 

Очень хочется перезагрузить компьютер из программы,
OS W2K.
В книжках сказано, что надо применить функцию:
ExitWindowsEx(EWX_REBOOT,0)
а также, что для NT необходимо, чтобы приложение
имело право произвести перезагрузку и для получения
этого права нужно воспользоваться функцией API
AdjustTokenPrivileges.
К сожелению я не сумел "победить" эту функцию.
Если кто знает как перезагрузить W2K из программы,
убедительная просьба сообщить.
С уважением Манчинский Алексей.


Marcus   (2002-11-18 19:23:00) [1]

var hToken: THandle; tkp: TOKEN_PRIVILEGES;

OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, tkp, 0, nil, 0);


Наверх

Титульная страница Поиск, карта сайта Написать письмо