Форум — Ответы ( К темам )
? | Raven: Какими функциями можно отключить, перезагрузить комп (очень надо) (28-04-2003 21:46:13) |
Я написал прогу, которая отключает, перезагружает комп и тп. Я использовал функции ExitWindowsEx(EWX_REBOOT, 0) ExitWindowsEx(EWX_SHUTDOWN, 0); Но, как оказалось, они не хотят работать в системах NT. Я пречел в help'е, что для того чтобы они заработали в NT, надо объявить какие-то PRIVILEGES (SE_SHUTDOWN_NAME privilege). Примера там не было и у меня не выходит, поэтому прошу Вас подсказать как можно перезагрузить Комп в NT (Windows XP). Помогите разобраться с этими PRIVILEGE или дайте другое решение. Благодарю!!! | |
Георгий (28-04-2003 23:46:32) | |
мне на аналогичный вопрос недавно отвечали — попробуй поиск для развёрнутого ответа, а краткий: HANDLE hToken; TOKEN_PRIVILEGES tkp; // Get a token for this process. if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) ; // Application->MessageBox("OpenProcessToken","",MB_ICONERROR|MB_OK); // 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) ; // Application->MessageBox("AdjustTokenPrivileges","",MB_ICONERROR|MB_OK); // Shut down the system and force all applications to close. if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_POWEROFF, 0)) Application->MessageBox("Не удалось выключить компьютер","Ошибка",MB_ICONERROR|MB_OK); |