Войти

Показать полную графическую версию : [решено] logout запуск с usb flash


Страниц : [1] 2

flesh666
16-03-2012, 10:03
Здравствуйте!
Помогите пожалуйста сделать чтобы когда вставил флэшку срабатывал logout.
Есть разные варианты, с autorun.info не получится. KAV блокирует любые автозапуски.
Может какой-нибудь хитрый способ?

DmitriiV
16-03-2012, 11:02
WMI: подписка на событие подключения накопителя.
Вот только зачем это надо?

flesh666
16-03-2012, 16:58
Есть usb flash с админским паролем, т.е. вставил на странице логинения, зашел под админом.
Но дело в что перед этим нужно выйди из под пользовательской учетки. Вот и хотелось этот процесс автоматизировать...

DmitriiV
16-03-2012, 17:09
Процесс завершения сеанса (logout) автоматизировать? Зачем (какова, так сказать, "стратегическая" цель этой процедуры)?

flesh666
16-03-2012, 18:00
Да, есть у нас топографы и геологи, они уезжают далеко и на долго, постоянно. Админских прав на машины им не дают, т.к. это все плохо кончалось. Дают флэшки начальникам партий с админскими паролями. Сразу оговорюсь, не я это придумал!
Так, вот они не все понимают что нужно выйдти и зайти, вообщем такой народ.

Поставили задачу автоматизировать. Программа для входа есть (rohos), а вот автоматический логаут как сделать не знаю.
Помогите пожалуйста!

Morpheus
16-03-2012, 21:58
Запускаем USBDeview (http://www.nirsoft.net/utils/usb_devices_view.html).
Options ---> Advanced Options ---> в первой строчке пишем "путь\USBCon.cmd" %device_type%
В USBCon.cmd пишем @Echo Off

set S=%1
if "%S:~0,5%" == "Mass" shutdown /l

Закидываем USBDeview в автозагрузку и ставим флажки Options ---> Put Icon On Tray и Options ---> Start USBDeview As Hidden
Наслаждаемся :)

Можно сделать, чтобы срабатывало не на все флешки, а на определённую. Тогда скрипту надо передавать %serial_number%, а в самом скрипте заменить "Mass" на определённый серийный номер.

flesh666
17-03-2012, 20:13
Спасибо большое!
А несколько %serial_number% можно как то сделать?
Т.е. чтобы срабатывал только на 3 флэшки.

Iska
17-03-2012, 22:24
А несколько %serial_number% можно как то сделать? »
Так, как описал Morpheus выше. Например:
http://img834.imageshack.us/img834/1996/image000mp.png

Содержимое «C:\Program Files\USBDeview\USBCon.cmd»:
@echo off
setlocal enableextensions enabledelayedexpansion

set sParam=%~1
set sSerialNumber=%~2

set sLegalSerialNumbers="ff01ECBB0300FFCF0036" "ff01ECBB0300FFCF00B8" "ff01ECBB0300FFCF00B9"

if defined sParam (
if defined sSerialNumber (
if /i "%sParam%" equ "Mass Storage" (
for %%i in (%sLegalSerialNumbers%) do if /i "%sSerialNumber%" equ "%%~i" shutdown.exe /l
)
)
)

endlocal
exit /b 0


В переменной «sLegalSerialNumbers» перечисляете потребные серийные номера, как они отображаются в «USBDeview».


2Morpheus: мне понравилось.

Morpheus
17-03-2012, 22:45
flesh666, проще всего @Echo Off

set S=%1
if "%S%" == "NA000067CPR" shutdown /l
if "%S%" == "19891609801" shutdown /l
if "%S%" == "5969654655" shutdown /l
Наверное, можно сделать красивее, но я не знаю как там "или" воткнуть :)

Iska, опередил :) Отлично! %device_type% можно, наверное, выкинуть.

flesh666
18-03-2012, 11:03
Огромное спасибо!

flesh666
19-03-2012, 18:43
Обнаружилась проблема на Windows 7 x64 срабатывает, но ничего не происходит, в чем может быть дело?

Iska
19-03-2012, 20:19
на Windows 7 x64 срабатывает »
Как определили, что срабатывает?

но ничего не происходит »
Добавьте в конец пакетного файла (перед «exit») «pause» и посмотрите, что не так.

Добавьте вывод переменных:
echo [%sParam%]
echo [%sSerialNumber%]

дабы убедиться, что они передаются в пакетный файл.

Morpheus
19-03-2012, 21:48
flesh666, у меня именно 7x64 - всё ок. Чей код используете?

flesh666
20-03-2012, 05:19
Iska, использую Ваш код. Определил, т.к. ставил паузу и видел окно скрипта.

Вывод:
[Устройство хранения данных]
[0018f3d974b4eab1a17601dd]

вроде как все верно, но не завершается сеанс, хотя если в cmd написать shutdown /l то все ок.

@echo off
setlocal enableextensions enabledelayedexpansion

set sParam=%~1
set sSerialNumber=%~2

set sLegalSerialNumbers="0018f3d974b4eab1a17601dd" "ff01ECBB0300FFCF00B8" "ff01ECBB0300FFCF00B9"

if defined sParam (
if defined sSerialNumber (
if /i "%sParam%" equ "Mass Storage" (
for %%i in (%sLegalSerialNumbers%) do if /i "%sSerialNumber%" equ "%%~i" shutdown.exe /l
)
)
)
echo [%sParam%]
echo [%sSerialNumber%]
endlocal
pause
exit /b 0

Iska
20-03-2012, 06:04
flesh666, Вы добавили в «USBDeview» локализацию — файл «USBDeview_lng.ini». Соответственно, и в пакетном файле поменяйте «Mass Storage» на «Устройство хранения данных» и не забудьте, что он должен быть в кодировке OEM/866.

Либо вовсе избавьтесь от употребления «Device Type» — как советовал выше (http://forum.oszone.net/post-1881468.html#post1881468) Morpheus.

flesh666
21-03-2012, 06:09
Избавился от Device Type. Все равно не работает...
Попробовал серийный номера убрать, не работает! А если руками запускать, то срабатывает, чудес :)

Может комп чудит, попробую на другом.

flesh666
21-03-2012, 10:11
На другом компьютере с XP x32 тоже самое.
Срабатывает, но ничего не происходит...

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

Morpheus
21-03-2012, 14:30
Избавился от Device Type. »
Так получилось?

http://s019.radikal.ru/i638/1203/5b/7994457ed1c2.jpg
@echo off
setlocal enableextensions enabledelayedexpansion

set sSerialNumber=%~1

set sLegalSerialNumbers="ff01ECBB0300FFCF0036" "ff01ECBB0300FFCF00B8" "ff01ECBB0300FFCF00B9"

if defined sSerialNumber (
for %%i in (%sLegalSerialNumbers%) do if /i "%sSerialNumber%" equ "%%~i" shutdown.exe /l
)

endlocal
exit /b 0

flesh666
22-03-2012, 07:19
Да, все заработало!
Большое Вам спасибо!

voler
18-06-2012, 14:32
Для отработки событий USBDeview должен работать постоянно. Запускаться при запуске windows?




© OSzone.net 2001-2012