|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Shutting Down
You can use the ExitWindowsEx function to shut down the system. Shutting down flushes file buffers to disk and brings the system to a condition in which it is safe to turn off the computer.
Windows NT: The following example enables the SE_SHUTDOWN_NAME privilege and then shuts down the system.
HANDLE hToken; TOKEN_PRIVILEGES tkp; // Get a token for this process. if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) error("OpenProcessToken"); // Get the LUID for the shutdown privilege. LookupPrivilegeValue(NULL, 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, (PTOKEN_PRIVILEGES)NULL, 0); // Cannot test the return value of AdjustTokenPrivileges. if (GetLastError() != ERROR_SUCCESS) error("AdjustTokenPrivileges"); // Shut down the system and force all applications to close. if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0)) error("ExitWindowsEx");
For more information about setting security privileges, see Security.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
ОТКЛЮЧАЮЩИЙ
Вы можете использовать функцию ExitWindowsEx, чтобы отключать систему. Отключая сбрасывает файловые буферы на диск и переносит систему на условие в которой это безопасное, чтобы выключать компьютер.
Windows NT: следующий пример приспосабливается привилегию SE_SHUTDOWN_NAME затем отключает систему.
ПРООПЕРИРУЙТЕ hToken; tkp TOKEN_PRIVILEGES; // Получите признак для этого процесса. если (!OpenProcessToken ОШИБКИ(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))("OpenProcessToken"); // Получите LUID для привилегии выключения. LookupPrivilegeValue(НЕДЕЙСТВИТЕЛЬНЫЙ, SE_SHUTDOWN_NAME, &tkp.Привилегии[0].Luid); tkp.PrivilegeCount = 1; // одна привилегия, чтобы устанавливать tkp.Привилегии[0].Приписывает = SE_PRIVILEGE_ENABLED; // Получите привилегию выключения для этого процесса.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); // Не может протестировать обратную величину AdjustTokenPrivileges. если ошибка (GetLastError() != ERROR_SUCCESS)("AdjustTokenPrivileges"); // Отключите систему и заставляйте приложения, чтобы закрываться. если (!ExitWindowsEx ОШИБКИ(EWX_SHUTDOWN | EWX_FORCE, 0))("ExitWindowsEx");
Более подробно об установке привилегий безопасности, смотри Безопасность.
|
|
|
|
| |