Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 7 (http://forum.oszone.net/forumdisplay.php?f=95)
-   -   [решено] Подтверждение при нажатии кнопок "Завершение работы" и "Перезагрузка" (http://forum.oszone.net/showthread.php?t=229026)

amilak 28-02-2012 17:13 1868494

Подтверждение при нажатии кнопок "Завершение работы" и "Перезагрузка"
 
помогите решить проблему: система Windows 7 Ultimate 64 bit ... для удобства в панели задач размещены два ярлыка - завершение работы Windows (C:\Windows\System32\shutdown.exe -s -t 00) и перезагрузка (C:\Windows\System32\shutdown.exe -r -t 00). Как сделать так, чтобы при нажатии на кнопку завершение работы и перезагрузка выполнялись не сразу, а требовали подтверждения? Это нужно, чтобы обезопасить систему от случайного нажатия этих кнопок

Blast 28-02-2012 17:14 1868500

Установите для этих задач таймер в секунд 5 и сможет отменить при случайном нажатии.

amilak 28-02-2012 17:17 1868502

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

Vadikan 28-02-2012 17:17 1868504

Blast, за пять секунд человек вряд ли успеет набрать shutdown /a в командной строке :)

Цитата:

Цитата amilak
чаще всего кнопки завершения работы или перезагрузки нажимают жена или сын, которым глубоко плевать на таймер »

Ну так пусть они пользуются обычными кнопками в своих учетных записях... [подкаст] 7 причин использовать отдельные учетные записи для каждого члена семьи

Вообще не понимаю смысла делать кнопки, а потом искать способ обойти случайное нажатие. Бонус: используйте режимы сна и гибернации!

Blast 28-02-2012 17:21 1868508

Цитата:

Цитата Vadikan
за пять секунд человек вряд ли успеет »

ну так ярлычок третий "для удобства" :)

amilak 28-02-2012 17:25 1868511

предлагаю не предлагать такие варианты решения проблемы как на фига тебе нужны эти кнопки, отдельные учетные записи и выбрось ты этот компьютер ... только по существу

Vadikan 28-02-2012 17:29 1868516

Цитата:

Цитата amilak
только по существу »

Хм... мы уже знаем, что вас не интересуют ответы по существу.

Но раз вы требуете, то ответ по существу такой. В окне, которое выводит команда shutdown при перезагрузке/выключении, не предусмотрено кнопок для отмены операции.

Ваша хотелка не имеет решения в столь жесткой постановке вопроса.

Blast, +1 и LOL :)

Morpheus 28-02-2012 17:33 1868519

Код:

@echo off
set /p answer=Enter your choice (Y or N):
if %answer%==y C:\Windows\System32\shutdown.exe -s -t 00


Blast 28-02-2012 17:33 1868520

Заверните в cmd свои удобные команды и требуйте подтверждения. Пример:
Код:

@echo off
set /p answer=Выполнить перезагрузку? (Y/N):
if %answer%==y shutdown -r -t 00
cls

только не говорите "зачем мне это нужно" :)

Morpheus 28-02-2012 18:22 1868562

Blast, шо, апять? :)

Вспомнил, как можно сделать красиво...

Код:

nircmd.exe qbox "Перезагрузимся?" "Вопрос на засыпку :)" "shutdown.exe" -r -t 00

amilak 28-02-2012 18:28 1868565

сори, но я не такой продвинутый пользователь, чтобы разобраться как этот код завернуть в cmd ... нужно создать в текстовом редакторе файл с этим кодом и расширением .bat ?

Morpheus 28-02-2012 18:30 1868574

amilak, именно.

amilak 28-02-2012 18:31 1868576

Morpheus, спс, попробую разобраться, хотя, конечно, хотелось бы без сторонних утилит и гаджетов всяких обойтись

Morpheus 28-02-2012 18:33 1868578

amilak, в случае с cmd/bat сторонние утилиты не нужны.
Сторонняя утилита используется только в сообщении 10, для "деланья красиво".

Vadikan 28-02-2012 18:48 1868587

Morpheus, тогда заодно нужно рассказать про автоперевод фокуса на запущенную программу.

Иначе количество кликов вкупе с нажатиями клавиш сравняется с тремя кликами, которые требуются для перезагрузки из меню Пуск :) Для выключения их уже столько же.

amilak 28-02-2012 18:53 1868589

сделал файл reboot.bat с кодом:
@echo off
set /p answer=Выполнить перезагрузку? (Y/N):
if %answer%==y shutdown -r -t 00
cls
кошмар какой-то вышел, при нажатии появляется окно командной строки с текстом в виде абракадабры (по-видимому, это "Выполнить перезагрузку?" некорректно отображается) и предложением нажать Y/N ... слишком громоздко и долго ... есть масса утилит сторонних для завершения работы и ребута, но просто хотелось бы свои ярлыки с командами shutdown.exe -s -t 00 и shutdown.exe -r -t 00 настроить ... может, как-то нужно ключ запуска изменить ?! мне тут подсказывают, что нужно изменить таймаут, подтверждения не будет, но будет кнопка отмены, но я, честно говоря, не улавливаю смысл ...

Blast 28-02-2012 18:55 1868592

Vadikan, ты меня опередил :)
Вот смотрю я на все это и недоумеваю...
amilak, я не хочу учить вас жизни или навязывать свое видение, но просто подумайте. Вы сделали ярлык для выключения компьютера в один клик - ок, мне сложно понять преимущества, но я принимаю, что вам это нужно. Теперь вы сделали тот же ярлык, но с подтверждением действия, что привело нас к двум кликам для выполнения операции (при условии использования варианта с nicmd). Собственно один клик - это нажатие кнопки Пуск и второй клик это нажатие кнопки Завершение работы, итого - два клика.
Любите шорох орехов? :)

Цитата:

Цитата amilak
с текстом в виде абракадабры »

Кодировку поменяйте: [решено] Кириллица в cmd и bat файлах
Цитата:

Цитата amilak
слишком громоздко и долго »

Тогда юзайте вариант из сообщения #10

Vadikan 28-02-2012 19:02 1868599

Цитата:

Цитата amilak
мне тут подсказывают, что нужно изменить таймаут, подтверждения не будет, но будет кнопка отмены »

Попробуйте и увидите, что будет кнопка "Закрыть" :)

Blast 28-02-2012 19:16 1868616

Последний вариант... честно :)

Действия те же, только теперь код в текстовый файл и сохраните с расширением vbs
Код:

Message = "Сейчас как перезагрузится..."  & vbCR & vbCR
Message = Message & "Продолжить?"

X = MsgBox(Message, vbYesNo, "А оно надо?")

If X = 6 Then

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run ("shutdown -r -t 00")

Else

MsgBox "Фух... пронесло кажется." & vbcr & vbcr, 4096, "Юзер испугался"

End If

Красным выделены тексты сообщений и заголовков в окошках подтверждения и информации, зеленым команда для выполнения при согласии - меняйте как понравится.

Только помните, что WHS сценарии не умеют запрашивать повышение привилегий при включенном UAC

Vadikan 28-02-2012 21:16 1868711

После шестого поста я даже не сомневался, что в итоге все сведется к банальному VBS. Но на домашнем ПК его отличие от nircmd, лежащей в system32, трудно объяснить с точки зрения здравого смысла. В общем, как и...

amilak 28-02-2012 22:29 1868774

Цитата:

Цитата Vadikan
Но на домашнем ПК его отличие от nircmd, лежащей в system32, трудно объяснить с точки зрения здравого смысла »

поясните, что Вы имели ввиду ?

Blast 28-02-2012 22:34 1868779

А что тут пояснять? Если файл nircmd.exe скопировать в папку \Windows\Sysytem32\ то вариант из сообщения #10 будет наиболее красиво-недолгим исходя из ваших запросов. Но вы настаиваете на том, чтобы не использовать ничего стороннего, вот и непонятно почему.

amilak 28-02-2012 22:42 1868784

Morpheus,
спасибо за совет, хорошая утилита ... позвольте для полной ясности уточнить:
- в какой каталог лучше поместить файл nircmd.exe - Windows или System32 ?
- как избавиться от каких-либо слов в верхней части окна (в Вашем скрине это "вопрос на засыпку"), если их просто стереть, то там прописывается идущее следом слово shutdown ?
- какую команду прописать для перехода в режим сна (Win7 x64)? в справке к nircmd.exe таковой не нашел.
спс

Morpheus 28-02-2012 22:45 1868787

amilak, пожалуйста :)
Цитата:

Цитата amilak
- в какой каталог лучше поместить файл nircmd.exe - Windows или System32 ? »

В любую.
Цитата:

Цитата amilak
- как избавиться от каких-либо слов в верхней части окна »

""
Цитата:

Цитата amilak
если их просто стереть, то там прописывается идущее следом слово shutdown ? »

Нет.
Цитата:

Цитата amilak
- какую команду прописать для перехода в режим сна (Win7 x64)? в справке к nircmd.exe таковой не нашел. »

Как создать ярлыки для спящего режима или гибернации?

Blast 28-02-2012 22:47 1868788

Цитата:

Цитата amilak
как избавиться от каких-либо слов в верхней части окна »

Код:

nircmd.exe qbox "Перезагрузимся?" "" "shutdown.exe" -r -t 00

amilak 28-02-2012 23:05 1868798

всем спасибо за ответы, в принципе разобрался и уже испробовал вновь созданные ярлыки "перезагрузки" и "завершения работы" (через nircmd.exe) ... но:
1. Morpheus кинул вот эту ссылку Как создать ярлыки для спящего режима или гибернации? , но там предлагается использовать утилиту PsShutdown. Но я уже заюзал nircmd.exe, все вполне устраивает, нельзя ли без PsShutdown обойтись (к слову сказать, пробовал ее до обращения на форум, не понравилась в силу ряда причин);
2. Можно ли что-то дописать в код перезагрузки (nircmd.exe qbox "Перезагрузимся?" "" "shutdown.exe" -r -t 00), чтобы после нажатия на кнопку "Нет" (на вопрос "Перезагрузимся?") появлялось еще одно окно с каким-либо текстом воспитательного значения типа "Больше так не шути". спс

Morpheus 28-02-2012 23:10 1868800

Цитата:

Цитата amilak
1. »

Там объясняется, для чего нужна PsShutdown, стандартные команды глючат.
Nircmd тоже умеет отправлять в сон, причём тесты сейчас показывают, что делает это весьма корректно, учитывая переключатель гибридной спячки в Windows. Потестируйте кому не лень,
Код:

nircmd standby
если всё ок, это будет хорошей альтернативой для PsShutdown.
Цитата:

Цитата amilak
2. »

Нет.

Vadikan 28-02-2012 23:53 1868830

Цитата:

Цитата amilak
чтобы после нажатия на кнопку "Нет" (на вопрос "Перезагрузимся?") появлялось еще одно окно с каким-либо текстом воспитательного значения типа "Больше так не шути". спс »

Blast, я знаю ты можешь! Простое окно, с кнопкой OK, но чтоб при нажатии на нее током било :)))

amilak 29-02-2012 21:43 1869550

возвращаясь к теме ... отличная утилита nircmd.exe, засунул ее в папку Windows 7 и в течение дня минувшего несколько раз испробовал ... но есть вопросец:
- Используемый мной код перезагрузки, который вчера здесь указывали Morpheus и Blast, таков:
nircmd.exe qbox "Перезагрузимся?" "" "shutdown.exe" -r -t 00 Однако, в справке к утилите эта команда прописана иначе: nircmd.exe qboxcom "Перезагрузимся?" "question" exitwin reboot То же самое относится и к команде завершения работы (в конце вместо reboot прописать poweroff. Оба вида команд работают. Что оставить, какой вид команд корректнее:
Этот: nircmd.exe qbox "Перезагрузимся?" "" "shutdown.exe" -r -t 00 (перезагрузка)
или этот nircmd.exe qboxcom "Перезагрузимся?" "" exitwin reboot ???

Blast 29-02-2012 21:46 1869555

amilak, оба варианта работают одинаково, оставляйте какой больше нравится :)

Morpheus 29-02-2012 21:49 1869559

Цитата:

Цитата amilak
отличная утилита nircmd.exe »

Ну вот, а вы сопротивлялись :)
Цитата:

Цитата amilak
Что оставить, какой вид команд корректнее:
Этот: nircmd.exe qbox "Перезагрузимся?" "" "shutdown.exe" -r -t 00 (перезагрузка)
или этот nircmd.exe qboxcom "Перезагрузимся?" "" exitwin reboot ??? »

Без разницы, второй, наверное, даже покомпактнее будет...

Iska 29-02-2012 23:29 1869648

Цитата:

Цитата amilak
Что оставить, какой вид команд корректнее: »

Оба варианта корректны, ибо используют в конечном итоге одни и те же функции ОС.

Эта:
Код:

nircmd.exe qbox "Перезагрузимся?" "" "shutdown.exe" -r -t 00
использует вызов внешней утилиты «shutdown.exe», входящей в комплект ОС. Вторая:
Код:

nircmd.exe qboxcom "Перезагрузимся?" "" exitwin reboot
использует для перезагрузки внутреннюю команду NirCmd.

amilak 06-09-2012 22:41 1984458

Iska, сенкс


Время: 18:38.

Время: 18:38.
© OSzone.net 2001-