Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Форсированное выключение XP
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
WebStalker
Guest
 
Сообщений: n/a
По умолчанию Форсированное выключение XP - 19.02.2005, 20:43

Я хочу форсированно вырубить комп с NTXP системой. Примерно так, как это происходит с 98-й виндой при использовании EWX_FORCE. В NT-based системах мне нужно получить право на выключение SeShutdownPrivilege и это я делаю. При этом простое выключение EWX_SHUTDOWN срабатывает. Но используя EWX_FORCE в XP происходит только завершение сеанса. Как можно форсированно вырубить NT или XP?

Очень большая опросьба отправить ответ на мыло или в асю. Но тут тоже ничего =)) Заранее спасибо.
Ответить с цитированием
  (#2 (permalink)) Старый
WebStalker
Guest
 
Сообщений: n/a
По умолчанию Форсированное выключение XP - 19.02.2005, 20:43

Я хочу форсированно вырубить комп с NTXP системой. Примерно так, как это происходит с 98-й виндой при использовании EWX_FORCE. В NT-based системах мне нужно получить право на выключение SeShutdownPrivilege и это я делаю. При этом простое выключение EWX_SHUTDOWN срабатывает. Но используя EWX_FORCE в XP происходит только завершение сеанса. Как можно форсированно вырубить NT или XP?

Очень большая опросьба отправить ответ на мыло или в асю. Но тут тоже ничего =)) Заранее спасибо.
Ответить с цитированием
  (#3 (permalink)) Старый
R@kot R@kot вне форума
Новичок
 
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 07.01.2005
По умолчанию 22.02.2005, 03:00

Попробуй так:

"...Для того, чтобы можно было программно выключить компьютер в NT/2000/XP необходимо иметь привилегию 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);
Вот теперь можно использовать следующие функции:
ExitWindowsEx(EWX_POWEROFF, 0); //выключение
ExitWindowsEx(EWX_REBOOT, 0); //перезагрузка

Если на момент выполнения функции в системе имеются приложения с несохранёнными документами, то выключение/перезагрузка не произойдёт до тех пор, пока эти документы не будут сохранены.

Для того, чтобы выключить/перезагрузить комп, несмотря на несохранённые документы, нужно записать так:
ExitWindowsEx(EWX_FORCE | EWX_POWEROFF, 0); //выключение
ExitWindowsEx(EWX_FORCE | EWX_REBOOT, 0); //перезагрузка

..."
Ответить с цитированием
Ads
  (#4 (permalink)) Старый
R@kot R@kot вне форума
Новичок
 
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 07.01.2005
По умолчанию 22.02.2005, 03:00

Попробуй так:

"...Для того, чтобы можно было программно выключить компьютер в NT/2000/XP необходимо иметь привилегию 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);
Вот теперь можно использовать следующие функции:
ExitWindowsEx(EWX_POWEROFF, 0); //выключение
ExitWindowsEx(EWX_REBOOT, 0); //перезагрузка

Если на момент выполнения функции в системе имеются приложения с несохранёнными документами, то выключение/перезагрузка не произойдёт до тех пор, пока эти документы не будут сохранены.

Для того, чтобы выключить/перезагрузить комп, несмотря на несохранённые документы, нужно записать так:
ExitWindowsEx(EWX_FORCE | EWX_POWEROFF, 0); //выключение
ExitWindowsEx(EWX_FORCE | EWX_REBOOT, 0); //перезагрузка

..."
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выключение компьютера bossy33 Любые вопросы от новичков 0 07.01.2012 19:34
Произвольное выключение компьютера bgs4 Техническая поддержка 15 09.11.2011 12:39
перезагрузка..выключение seregaby Любые вопросы от новичков 5 31.07.2011 08:10
Самопроизвольная перезагрузка и выключение iluxa Любые вопросы от новичков 25 25.01.2011 07:14
Самопроизвольное выключение пк HeavyGunner Блоки питания 12 07.05.2010 06:56
Выключение компьютера grinya Операционная система Windows 4 26.01.2009 21:30
Внезапное выключение MaRsIaniN095 Ноутбуки 4 29.12.2008 01:51
Выключение компьютера polko Софт и программы 11 14.08.2007 13:43
Выключение клавиатуры Tarik WinAPI 1 01.06.2004 13:54
Как организовать включение и выключение ALT+TAB - on off toxed Delphi 2 17.11.2003 19:04
Выключение Компа Anonymous Visual Basic 2 25.08.2003 20:48
Удаленное выключение компьютера XKiller WinAPI 3 03.10.2002 17:30



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов