-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Скрипт для безопасного извлечения флешки
Доброе время суток всем ! :)
Вот вопрос по теме, давайте делиться как реализовать.
Можно использовать штатные средства Windows, тогда как ? Или встроенные возможности доступа к железу.
В любом случае было бы интересно найти способ агрессивного извлечения флешки даже в том случае, если с нее запущены программы.
|
Цитата:
Цитата 11943499
способ агрессивного извлечения флешки »
|
гм... удаленно что-ли?.. например, привязать к CD приводу - чтобы при выезде лотка выдергивалась флешка... хотя, пожалуй, у привода сил не хватит... тогда можно использовать блок, при этом силу можно увеличить раз в 10 (соотношение длины USB-разъема и диаметра CD), т.е. в итоге мы должны получить что-то типа полипласта
Цитата:
Цитата 11943499
Можно использовать штатные средства Windows, тогда как ? Или встроенные возможности доступа к железу. »
|
что имеется ввиду?.. обрубить открытые файлы?.. или автоматизировать операцию "безопасного извлечения"..
|
Цитата:
Цитата amel27
например, привязать к CD приводу - чтобы при выезде лотка выдергивалась флешка »
|
:yes:
Цитата:
Цитата amel27
что имеется ввиду?.. обрубить открытые файлы?.. или автоматизировать операцию "безопасного извлечения".. »
|
и обрубить и извлечь.....эээээ...фигурально, не физически...
|
Ну не изобретая за ново велосипед .... можно.
Есть утилита DevEject
Утилита работает в командной строке через команду:
DevEject.exe -EjectDrive:X: (X-буква присоединенной флешки)
Например: DevEject.exe -EjectDrive:H:
Остаётся только ... а ничего не остаётся просто пользоватся ей. =)
|
Мне сначала тоже пришло в голову привязать веревочкой к CD-ROM :)
На самом деле можно стандартными средствами винды - Пуск-Выполнить-compmgmt.msc
Но вот параметров я не знаю (чтобы все автоматом сдеалть), хотя на то нам автоит и дан ...
|
Не работает эта утилитка в среде X64, да и неудобно это, тулить в скрипт чуждый модуль.
Хочется не велосипед, а вездеход )
|
compmgmt.msc + msdnтворят чудеса с человечискими мозгами.
так что велком. :)
|
Цитата:
Цитата Nik_rus
compmgmt.msc + msdnтворят чудеса с человечискими мозгами. »
|
Ну и о чем это ?
Кто-нибудь считал шапку темы ? :closed-to
|
Я про то что ты можешь взять эту стандартную в винде утилу на вооружение (там есть пункт "Съемные ЗУ") а на онлайн спарвке мелкомягких можно узнать параметры ком-строки aka compmgmt.msc /s zy /a snyat' и проч., но я их не знаю, да и зачем они, если в руках автоит - им можно все сделать.
Какие все непонятки :dont-know
|
Цитата:
Цитата Nik_rus
если в руках автоит - им можно все сделать. »
|
Хммм..... Задавая свой вопрос на форуме по Autoit, какие иные способы я мог бы подразумевать...?
Итак, как можно реализовать безопасное программное извлечение флешки с помощью autoit ?
|
Ну собсно попробовав той утилой отрубить флешку - она действительно вырубается, но драйв остается...
Отследил я там, что при запуске "Безпасного извлечения" запускается rundll32.exe, надо только нужную длл найти...
|
Цитата:
Цитата 11943499
как можно реализовать безопасное программное извлечение флешки с помощью autoit ? »
|
на форуме оффсайта искал?.. Safely Eject a USB Drive
|
Цитата:
Цитата amel27
на форуме оффсайта искал? »
|
Читал, там тоже дело затихло на стадии неудачного эксперимента.
|
11943499, у меня работает, статистика есть?
|
А тупо отключить USB порт на определенное время и потом включить его можно? :)
|
Цитата:
Цитата Belfigor
тупо отключить USB порт »
|
безопасным такое "извлечение" сложно назвать :)
|
http://technet.microsoft.com/ru-ru/s.../bb897438.aspx
Цитата:
Автор: Марк Руссинович (Mark Russinovich)
Опубликовано 1 ноября 2006 г.
Введение
В ОС UNIX имеется стандартная служебная программа под названием Sync, которая позволяет сбросить все данные файловой системы из памяти на диск, чтобы они не были потеряны, если произойдет сбой системы. Без выполнения этой операции все присутствующие в кэше данные утрачиваются при сбое. Я написал аналогичную программу, также названную Sync, которая работает во всех версиях Windows. Обращайтесь к ней, если вам потребуется организовать надежное хранение на жестких дисках измененных данных файловой системы. К сожалению, для запуска Sync нужны административные привилегии. В данной версии, помимо прочего, реализована возможность сброса из памяти данных, относящихся к съемным носителям (например, к ZIP-дисководам).
Синтаксис: sync [-r] [-e] [список букв дисков]
-r Сброс съемных носителей.
-e Извлечение съемных носителей.
При указании конкретных дисков (например, "c e") программа Sync сбрасывает из памяти только связанные с ними данные.
|
|
amel27, нет, это не ради извлечения, это чтобы просто отключить работу например клавиатуры на определенное время, ей от этого хуже не станет :)
Дак можно или нет? :)
Ну или любым другим способом заблокировать пользователю возможность исользования маши или клавиатуры до тех пор пока скрипт не сочтет нужным разрешить пользователю снова ими пользоваться?
|
Цитата:
Цитата Belfigor
любым другим способом заблокировать пользователю возможность исользования маши или клавиатуры до тех пор пока скрипт не сочтет нужным разрешить пользователю снова ими пользоваться »
|
поиск по форуму, ключевое слово: " SetWindowsHookEx" ;)
|
BlockInput() не подходит?
|
Цитата:
Цитата amel27
11943499, у меня работает, статистика есть? »
|
Стсатистика проста, пробовал тамошний скрипт, в нем если запущены проги с флешки, то при ее остановке, процесс неуспешен.
А смысл задачи в том, чтобы насмотря ни на что отключить флешку, подкосив все исходящие с нее программы. Отключение USB не вариант, так как программно это невозможно, да и отключать в моем случае нужно не физическую флешку, а эмулированную.
|
Цитата:
Цитата 11943499
насмотря ни на что отключить флешку, подкосив все исходящие с нее программы »
|
тогда можно просто выдернуть - эффект тот же :)
AFAIK Windows не предоставляет программных интерфейсов для работы с "чужими" описателями, т.е. "отрубить" заданную программу или даже просто получить список "плохих" процессов очень проблематично.... то же самое касается и сброса буферов на диск. Т.е. без сторонних утилит, написанных в дебрях MS (использующих недокументированные функции и структуры) здесь никак не обойтись, поэтому вижу лишь два пути:
1. Сброс буферов через Sync, дальше хоть выдергивай - минимум мозговых усилий.
2. Поиск "плохих" процессов/описателей через Handle, далее - либо рубить, либо автозакрытие.
|
Вот файл. Работает с любой флешкой. Называется removedrive. Скачиваем архив, распаковываем в корень флешки, создаем removedrive.bat в нём пишем:
@ECHO off
removedrive.exe \ -l -h -b -i -d
exit
Ссылка http://www.uwe-sieber.de/files/removedrive.zip
|
Мне интересно, вся эта истерия по поводу "безопасного извлечения" только меня не коснулась?
До появления XP SP2 (да, именно тогда появилась в трее эта новая иконка) никто и не знал, что перед выдергиванием флешки нужно что-то нажимать (линуксоиды не считаются), теперь - ритуал какой-то. Некоторые (особо одаренные) предпочитают даже компьютер выключать ради этой процедуры (наиболее безопасное средство из всех безопасных).
Будто у всех флешки исключительно в NTFS форматированы и им крайне важна эта процедура...
Куда катится этот мир?
|
Цитата:
Цитата 266903582
Будто у всех флешки исключительно в NTFS форматированы и им крайне важна эта процедура... »
|
Если бы при выдергивание флешки (вместо безопасного извлечения устройства) была только маленькая вероятность потери данных, то с этим в крайнем случае можно было бы смирится, но, к сожалению, бывают случаи, когда при выдергивании флешки пропадает сама флешка...
|
Время: 17:01.
© OSzone.net 2001-