Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Vladgul Гость
|
Добавлено: Ср Июл 02 2003 09:51 Заголовок сообщения: Перезагрузка в WINDOWS. (+) |
|
|
Перезагрузка в WINDOWS. Кто знает подскажите.
Нужно чтобы компьютер (Windows) выключался в назначенное время. Использую функцию ExitWindowsEx(EXW_SHUTDOWN,0) В WIN98 выключается. В WIN2000 не хочет. Зато функция ExitWindows(0,0) в WIN2000 работает, но перезугружает только сеанс текущего пользователя. Если кто сталкивался с такой проблемой подскажите решение |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Ср Июл 02 2003 10:36 Заголовок сообщения: Re: Перезагрузка в WINDOWS. (+) |
|
|
Сталкивался с подобной проблемой в линуксе. Сперва тебе нужно получить полномочия суперпользователя, потом делать shutdown. NT система многопользовательская, представь, что на машине работают несколько сеансов равноправных пользователей и вдруг один сказал shutdown ? |
|
Вернуться к началу |
|
|
Anatoliy
Зарегистрирован: 15.04.2002 Сообщения: 681 Откуда: Moscow
|
Добавлено: Ср Июл 02 2003 10:41 Заголовок сообщения: Re: Перезагрузка в WINDOWS. (+) |
|
|
Вот вырезал у себя кусок кода. (С++ Builder)
if (Application->MessageBox ( "ВНИМАНИЕ! При ответе ДА компьтер перегрузится. Если есть другие открытые приложения закройте их.", "Перезагрузка компьтера", MB_YESNO + MB_ICONINFORMATION) == IDYES) { HANDLE hToken; TOKEN_PRIVILEGES* NewState; OSVERSIONINFO OSVersionInfo; OSVersionInfo.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); GetVersionEx (&OSVersionInfo); if (OSVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT) { 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); } ExitWindowsEx (EWX_REBOOT, 0); }
Удачи. |
|
Вернуться к началу |
|
|
|