FAQ по C/C++/Visual C++
Работа с сетью Выключение компьютьера |
Составители: SUnteXx, Leprecon |
Выключение компьютьера | |||
bool ExitWindowsEx (UINT uFlags, DWORD dwReason);Declared in Winuser.h; include Windows.h. Use User32.lib. uFlags: для перегрузки используем EWX_REBOOT для выключения питания EWX_POWEROFF если нужно экстренно выключит/перегрузить комп, используем вышеуказаные влаги в сочетании с EWX_FORCE Второй параметр используется только в XP для указания причины перезагрузки. В NT/2000/XP для использования ExitWindowsEx необходимо иметь привелегию SE_SHUTDOWN_NAME, по умолчанию не установленную даже для администратора. Установить её можно нижеприведённым кодом. HANDLE hToken; TOKEN_PRIVILEGES* NewState; OpenProcessToken (GetCurrentProcess (), TOKEN_ADJUST_PRIVILEGES, &hToken); NewState = (TOKEN_PRIVILEGES*) malloc (sizeof (TOKEN_PRIVILEGES) + sizeof (LUID_AND_ATTRIBUTES)); NewState->PrivilegeCount = 1; LookupPrivilegeValue (NULL, SE_SHUTDOWN_NAME, &NewState->Privileges[0].Luid); NewState->Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges (hToken, FALSE, NewState, NULL, NULL, NULL); free (NewState); CloseHandle (hToken); |
Используется API-функция |||
|
FAQ составлен по материалам Форума на Исходниках.Ру. Copyright © 2002 by Sources.ru. All rights reserved. |