Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Можно ли остановить ShutDown и Reboot?

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

Sleepwalker



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Бывает, shutdown происходит, когда его совсем не ждешь. Есть ли какие-нибудь АПИ-функции, чтобы отменить выключение или ребут? или программы.

----------
...или я ничего не понимаю в этой жизни... или понимаю слишком хорошо...

Всего записей: 1957 | Зарегистр. 19-10-2002 | Отправлено: 10:38 11-08-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sleepwalker
AbortSystemShutdown
 
The AbortSystemShutdown function stops a system shutdown started by using the InitiateSystemShutdown function.
 
 
BOOL AbortSystemShutdown(
  LPTSTR lpMachineName
);
 
Parameters
lpMachineName  
[in] Pointer to the null-terminated string that specifies the network name of the computer where the shutdown is to be stopped. If lpMachineName is NULL or an empty string, the function stops the shutdown on the local computer.  
Return Values
If the function succeeds, the return value is nonzero.
 
If the function fails, the return value is zero. To get extended error information, call GetLastError.
 
Remarks
The InitiateSystemShutdown and InitiateSystemShutdownEx functions display a dialog box that notifies the user that the system is shutting down. During the shutdown time-out period, the AbortSystemShutdown function can prevent the system from shutting down.
 
 
Windows Server 2003, Windows XP SP1:  If the computer to be shut down is a Terminal Services server, the system displays a dialog box to all local and remote users warning them that shutdown has been initiated. If shutdown is prevented by AbortSystemShutdown, the system displays dialog box to the users informing them that the server is no longer shutting down.
 
 
To stop the local computer from shutting down, the calling process must have the SE_SHUTDOWN_NAME privilege. To stop a remote computer from shutting down, the calling process must have the SE_REMOTE_SHUTDOWN_NAME privilege on the remote computer. By default, users can enable the SE_SHUTDOWN_NAME privilege on the computer they are logged onto, and administrators can enable the SE_REMOTE_SHUTDOWN_NAME privilege on remote computers. For more information, see Running with Special Privileges.
 
Common reasons for failure include an invalid computer name, an inaccessible computer, or insufficient privilege.
 

Всего записей: 1439 | Зарегистр. 22-04-2002 | Отправлено: 11:25 11-08-2003
Sleepwalker



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail

Цитата:
started by using the InitiateSystemShutdown function

а какая функция вызывается на самом деле? есть еще ExitWindowsEx.


----------
...или я ничего не понимаю в этой жизни... или понимаю слишком хорошо...

Всего записей: 1957 | Зарегистр. 19-10-2002 | Отправлено: 11:42 11-08-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sleepwalker
работай с InitiateSystemShutdown
ExitWindowsEx предоставляет ограниченные возможности

Всего записей: 1439 | Зарегистр. 22-04-2002 | Отправлено: 11:56 11-08-2003
Sleepwalker



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail
ты не понял.. я хочу остановить shutdown, который может быть вызван чем угодно, начиная от выбора через меню start и заканчивая нажатием кнопки power на клавиатуре. что-нибудь можешь посоветовать?


----------
...или я ничего не понимаю в этой жизни... или понимаю слишком хорошо...

Всего записей: 1957 | Зарегистр. 19-10-2002 | Отправлено: 11:58 11-08-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sleepwalker
В каких случаях у тебя вылетает на ShutDown?

Всего записей: 1439 | Зарегистр. 22-04-2002 | Отправлено: 12:17 11-08-2003
Sleepwalker



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail
как я уже сказал: при нажати кнопки на клаве, например. Не у меня лично, просто была ситуация, когда сервак ушел в SD, и никого не спросил
или же есть программы, которые могут вызывать FSD, тот же Нейро или FlashGet.  
Да и банально админ домена вдруг захотел сделать мне удаленный SD. Это так все.. примеры...


----------
...или я ничего не понимаю в этой жизни... или понимаю слишком хорошо...

Всего записей: 1957 | Зарегистр. 19-10-2002 | Отправлено: 12:26 11-08-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sleepwalker
Реально перехватить "чужой" ShutDown нельзя.  
А нажатие кнопки на клаве можно отключить в Power Options / Advanced

Всего записей: 1439 | Зарегистр. 22-04-2002 | Отправлено: 12:36 11-08-2003
Sleepwalker



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail

Цитата:
"чужой" ShutDown нельзя

стопудово?
 

Цитата:
Power Options / Advanced

да дело не в кнопке... дело в принципе..  
понятно, что можно отключить...

----------
...или я ничего не понимаю в этой жизни... или понимаю слишком хорошо...

Всего записей: 1957 | Зарегистр. 19-10-2002 | Отправлено: 12:57 11-08-2003
Shushpan



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sleepwalker
Обычный шутдаун (не forced) можно остановить любым модальным окном. Например повесить хук, только когда до него дойдет дело, большинство программ будет уже убито. Но перезагрузку это остановит. Другие варианты - runas или заглушка в dll.

Всего записей: 284 | Зарегистр. 26-03-2002 | Отправлено: 13:12 11-08-2003
Sleepwalker



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shushpan
 

Цитата:
- runas или заглушка в dll.  

поподробнее можно?  


----------
...или я ничего не понимаю в этой жизни... или понимаю слишком хорошо...

Всего записей: 1957 | Зарегистр. 19-10-2002 | Отправлено: 13:15 11-08-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sleepwalker
Может попробовать в политике безопасности  поиграть с правами на "Shut Down System"?

Всего записей: 1439 | Зарегистр. 22-04-2002 | Отправлено: 13:18 11-08-2003
Sleepwalker



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail
это ничего не даст, там же только права устанавливаются, кто систему шатдаунить может...  


----------
...или я ничего не понимаю в этой жизни... или понимаю слишком хорошо...

Всего записей: 1957 | Зарегистр. 19-10-2002 | Отправлено: 13:46 11-08-2003
Shushpan



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sleepwalker
Если ты знаешь пароль того, кто запустил shutdown(forced или обычный), ты его сможешь соответственно отменить (-a) используя команду runas. Если конечно успеешь напечатать.  
 
Ну и http://www.desaware.com/SubclassingL3.htm

Всего записей: 284 | Зарегистр. 26-03-2002 | Отправлено: 14:18 11-08-2003
Sleepwalker



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shushpan

Цитата:
его сможешь соответственно отменить (-a) используя команду runas.  

напиши, КАК отменить... т.к. не совсем понимаю, зачем тут runas вообще...


----------
...или я ничего не понимаю в этой жизни... или понимаю слишком хорошо...

Всего записей: 1957 | Зарегистр. 19-10-2002 | Отправлено: 14:20 11-08-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sleepwalker

Цитата:
это ничего не даст, там же только права устанавливаются, кто систему шатдаунить может...

для того чтобы шатданить в NT, надо установить программно привелегии в системе
если их обрезать в политтике, то и шатдаун не пройдет
посмотри MSDN

Всего записей: 1439 | Зарегистр. 22-04-2002 | Отправлено: 14:49 11-08-2003
Sleepwalker



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sawamail
какие привелегии, если я (администратор) в данный момент работаю?  
и при чем тут MSDN?
дай тогда конкретный линк или точный топик.


----------
...или я ничего не понимаю в этой жизни... или понимаю слишком хорошо...

Всего записей: 1957 | Зарегистр. 19-10-2002 | Отправлено: 14:54 11-08-2003
Shushpan



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sleepwalker
Мы наверное про разные шутдауны говорим. Я говорю про такой, когда вылазит мерзкая табличка "вам жить осталось xy секунд, шлет привет adminZ".
А если у тебя уже в процессе, то ничего ты естественно набрать не сумеешь. Тут только сабклассинг поможет, чтоб сообщение не прошло совсем.
 

Всего записей: 284 | Зарегистр. 26-03-2002 | Отправлено: 15:48 11-08-2003
Sleepwalker



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shushpan
понятно.. что ниче не понятно...
 
сообщение я и сам могу заблокировать, вопрос в том, что за сообщение будет слаться и сработает ли этот хук...


----------
...или я ничего не понимаю в этой жизни... или понимаю слишком хорошо...

Всего записей: 1957 | Зарегистр. 19-10-2002 | Отправлено: 15:53 11-08-2003
sawamail



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sleepwalker
 
Стандартный код для шатдауна:
 
HANDLE hToken;
LUID ShutDownValue;
TOKEN_PRIVILEGES tkp;
 
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,&hToken);
 
LookupPrivilegeValue((LPSTR) NULL,SE_SHUTDOWN_NAME,&ShutDownValue);
 
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = ShutDownValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
 
AdjustTokenPrivileges(hToken,FALSE,&tkp,sizeof(TOKEN_PRIVILEGES),(PTOKEN_PRIVILEGES) NULL,(PDWORD) NULL);
 
InitiateSystemShutdown(NULL,"Система рухнет через несколько секунд!",45,TRUE,FALSE);
 
Возможно установив права пользователей в политике безопасности, ты не дашь возможности взять программно привилегии на шатдаун. Надо попробовать.
 
А в MSDN просто об этом можно поискать информацию

Всего записей: 1439 | Зарегистр. 22-04-2002 | Отправлено: 16:12 11-08-2003 | Исправлено: sawamail, 16:31 11-08-2003
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Можно ли остановить ShutDown и Reboot?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru