Страница 2 из 4 Первая 1234 Последняя
Показано с 21 по 40 из 70.

Как зафиксировать букву для флешки?

  1. #21
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для antanta
    Регистрация
    27.12.2008
    Адрес
    Алматы
    Сообщений
    687
    Вес репутации
    530
    Интересно, что делает чудо-программа, если на машине много разделов на хардах, и пара оптических приводов?
    Vadim_SVN, Для начала проверить бы, можно ли обмануть программу при помощи subst. То есть, копируем ключи в папку на харде, делаем subst и проверяем. Если помогает, идем дальше.
    Задача разбивается на три попроще.
    1) Застолбить литеры под наши девайсы. Решение - subst в автозагрузке.
    2) Идентифицировать флеш. Решение - по ID или по метке тома. Другое дело, что как отлавливать момент подключения стандартными средствами (на скриптах, батниках и проч) я не знаю. Поэтому могу только перепилить под это дело одну свою софтинку. Она определяет флеху по ID, и выполняет
    3) "Перемонтировать" буквы. Решение. Освобождаем (subst /d) нужную литеру. Определяем букву нашего реального накопителя, монтируем его корневой раздел на освободившуюся букву.

  2. Будь в курсе!
    Реклама на VirusInfo

    Надоело быть жертвой? Стань профи по информационной безопасности, получай самую свежую информацию об угрозах и средствах защиты от ведущего российского аналитического центра Anti-Malware.ru:

    Anti-Malware Telegram
     

  3. #22
    Full Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    13.01.2008
    Адрес
    Воронежская обл.
    Сообщений
    243
    Вес репутации
    243
    antanta,
    реализация идентификации флэхи (как это кто-то тут собирался делать скриптом
    Я не кто-то. Ибо азъ есмь!
    как отлавливать момент подключения стандартными средствами (на скриптах,батниках и проч)
    Код:
    @echo off
    rem Создание сценария получения списка томов:
    echo LIST VOLUME>lv
    rem Вывод списка томов на экран и в файл:
    diskpart /s lv &diskpart /s lv>vol_lst.txt
    Дальше нужно определиться, по чему будем идентифицировать нужную флешку: по метке тома, серийному номеру (0000-0000?! ) или маркерному файлу.
    Где-то у меня валялся MapDrive.cmd с забугорного форума, позволяющий без перезагрузки переназначать буквы, там нужно всего-лишь адаптировать разбор вывода diskpart к великому и могучему.

  4. #23
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для antanta
    Регистрация
    27.12.2008
    Адрес
    Алматы
    Сообщений
    687
    Вес репутации
    530
    VV2006, Это все в цикле? Пока юзер не подключит устройство?

  5. #24
    Full Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    13.01.2008
    Адрес
    Воронежская обл.
    Сообщений
    243
    Вес репутации
    243
    antanta, а зачем городить постоянный цикл опроса устройств, если задача сводится к выполнению отдельной прикладной задачи? Включаем все требуемые процедуры в один пакетный файл и всё.

  6. #25
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для antanta
    Регистрация
    27.12.2008
    Адрес
    Алматы
    Сообщений
    687
    Вес репутации
    530
    Цитата Сообщение от VV2006 Посмотреть сообщение
    antanta, а зачем городить постоянный цикл опроса устройств, если задача сводится к выполнению отдельной прикладной задачи? Включаем все требуемые процедуры в один пакетный файл и всё.
    Мой моск не смог предположить, что из юзермода (по крайней мере из батника) можно такие фокусы проделывать. Код в студию, пожалуйста.
    Иначе мне придется таки кодить, раз обещал Выручайте уж

  7. #26
    Full Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    09.12.2009
    Сообщений
    483
    Вес репутации
    710
    Цитата Сообщение от antanta Посмотреть сообщение
    Для начала проверить бы, можно ли обмануть программу при помощи subst.
    К сожалению, такая возможность не представляется возможной (каламбурчик). БК работают, главбухи тоже - и лучше их не трогать (себе дороже может выйти)
    По поводу программы - всякии сии чуда пишутся специализированно, и на что она готова обмануться, а на что нет - это только одной ей (программе) и известно.
    Цитата Сообщение от antanta Посмотреть сообщение
    Иначе мне придется таки кодить, раз обещал
    Да наверное не придется Спрашивалось из разряда факультатива. В любом случае получается, что это будет заточено именно под определенную программу и для определенной конкретной задачи, а не универсальным решением.

    Но на возможные варианты решения не против и посмотреть

  8. #27
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для Iron Monk
    Регистрация
    04.02.2010
    Сообщений
    1,106
    Вес репутации
    279
    Цитата Сообщение от PavelA Посмотреть сообщение
    Нужно сделать так, чтобы две разные флешки были с буквой "Е".
    http://www.uwe-sieber.de/usbdlm_e.html

  9. #28
    Full Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    09.12.2009
    Сообщений
    483
    Вес репутации
    710
    Iron Monk, на предыдущей странице ее обсудили уже

  10. #29
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для Iron Monk
    Регистрация
    04.02.2010
    Сообщений
    1,106
    Вес репутации
    279
    Цитата Сообщение от Vadim_SVN Посмотреть сообщение
    - 2 или 3 флешки с одинаковыми файлами (но с разным содержимым).
    Код:
    @echo off
    set usb=
    FOR %%d IN (c: d: e: f: g: h: i: j: k: l: m: n: o: p: q: r: s: t: u: v: w: x: y: z:) DO IF EXIST %%d\sign.key SET USB=%%d
    if "%usb%"=="" GOTO END
    if "%usb%"=="z:" GOTO END
    rem diskpart list volume (choose tom number of the removable disk)
    echo select volume=3 >sl
    echo assign letter=z >>sl
    diskpart /s sl
    del sl
    :end
    А момент подключения флешки стандартными средствами не реализуешь. Необходимо обработать сообщение Windows WM_DeviceChange где wParam= DBT_DEVICEARRIVAL.
    Почти четыре строчки кода получилось.
    Последний раз редактировалось Iron Monk; 27.03.2010 в 14:56. Причина: Добавлено

  11. #30
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для antanta
    Регистрация
    27.12.2008
    Адрес
    Алматы
    Сообщений
    687
    Вес репутации
    530
    Iron Monk, Момент подключения обрабатывается очень просто. Но, у некоторых студЭнтов возникают проблемы с "буквой" подключенного устройтва. Особенно, когда их более одного . Если поможете нам всем чиста конкретным кодом, мы все будем очень благодарны. Заодно проясним Ваш взгляд на решение этой проблемы. Ждем-с.

  12. #31
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для Iron Monk
    Регистрация
    04.02.2010
    Сообщений
    1,106
    Вес репутации
    279
    Цитата Сообщение от antanta Посмотреть сообщение
    Момент подключения обрабатывается очень просто
    Каким образом стандартными методами?
    Код из поста выше, меняет букву флешки на заданную, идентифицируя нужную флешку по файлу.
    Последний раз редактировалось Iron Monk; 27.03.2010 в 20:08.

  13. #32
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для antanta
    Регистрация
    27.12.2008
    Адрес
    Алматы
    Сообщений
    687
    Вес репутации
    530
    Цитата Сообщение от Iron Monk Посмотреть сообщение
    Каким образом стандартными методами?
    Разве что WMI? http://www.script-coding.info/WMI.html
    Хотя, для меня - темный лес. Проще на асме.
    Определение буквы не вызывает затруднений до тех пор, пока флешка одна. Когда встала задача работать с двумя и более, я и почувствовал себя студЭнтом. Найденные мной на форумах способы выглядят кривыми.
    Например, читать отсюда HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices . Зато недавно нашел вот такой способ отлова момента подключения:
    0) Dir db "C:\WINDOWS\system32\NtmsData",0
    1) invoke FindFirstChangeNotification, addr Dir, TRUE, FILE_NOTIFY_CHANGE_FILE_NAME
    2) mov pChang, eax
    3) invoke WaitForSingleObject, pChang, INFINITE
    4) PROFIT
    Плюсы: Работает, не требует создания окна.
    Минус: Требует запущенной службы "Съемные ЗУ". Возможно, чего-то еще.

    Добавлено через 1 минуту

    Цитата Сообщение от Iron Monk Посмотреть сообщение
    [CODE]
    Почти четыре строчки кода получилось.
    Не считая окна.
    Последний раз редактировалось antanta; 29.03.2010 в 11:23. Причина: Добавлено

  14. #33
    Junior Member Репутация
    Регистрация
    28.12.2006
    Адрес
    Москва
    Сообщений
    31
    Вес репутации
    63
    Ну можно например использовать встроеную программу diskpart из командной строки (написать cmd файл) например так:

    Я для теста создал папку scripts на диске d:
    В этой папке создал файл new.cmd и поместил туда следующий код:

    diskpart /s d:/scripts/listvol.txt > drive.txt
    type drive.txt
    @echo off

    set /p NumVol=Enter volum number:

    set /P NewLet=Enter the new drive letter:

    echo select vol %NumVol% > change.txt
    echo assign letter=%NewLet% >> change.txt
    echo list vol >> change.txt

    diskpart /s d:/scripts/change.txt > drive.txt
    type drive.txt

    rem set /p aaa=Press any key to exit...

    del drive.txt
    del change.txt

    Так же в этой папке создал файл listvol.txt и написал в нем:
    list vol

    Все. Достаточно запустить new.cmd, Откроется командная строка, где будут указаны все доступные носители.
    На первый вопрос нужно ввести номер тома (левая колонка) для которого надо изменить букву, на второй вопрос надо ввести новую букву...

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

  15. #34
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для Iron Monk
    Регистрация
    04.02.2010
    Сообщений
    1,106
    Вес репутации
    279
    Цитата Сообщение от Vadim_SVN Посмотреть сообщение
    Условие:
    - для успешной работы флешки должны получать одну и ту же букву диска.
    - при работе с программой необходимо последовательно вставить все флешки (одну за одной).
    - минимизировать кол-во телодвижений для данной процедуры
    Цитата Сообщение от arriah Посмотреть сообщение
    Достаточно запустить new.cmd, Откроется командная строка, где будут указаны все доступные носители.
    На первый вопрос нужно ввести номер тома (левая колонка) для которого надо изменить букву, на второй вопрос надо ввести новую букву...
    Не только "количество телодвижений" огромно, так еще "аналитическое мышление" нужно подключить.
    И еще бабушек в бухгалтерии обучить всему этому.

    Добавлено через 1 минуту

    Цитата Сообщение от arriah Посмотреть сообщение
    Ну можно например использовать встроеную программу diskpart из командной строки
    Post #29

    Добавлено через 21 минуту

    Цитата Сообщение от antanta Посмотреть сообщение
    Скрипт *.vbs:
    Код:
    Sub SINK_OnObjectReady(objReceivedEvent, objAsyncContext)
        Wscript.Echo "Name: " & objReceivedEvent.TargetInstance.Name
        Wscript.Echo "Caption: " & objReceivedEvent.TargetInstance.Caption
        Wscript.Echo "FileSystem: " & objReceivedEvent.TargetInstance.FileSystem
        Wscript.Echo "Description: " & objReceivedEvent.TargetInstance.Description
    End Sub
    
    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
    Set MySink = WScript.CreateObject( _
        "WbemScripting.SWbemSink","SINK_")
    
    objWMIservice.ExecNotificationQueryAsync MySink, _
        "SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE " & _
        "TargetInstance ISA 'Win32_LogicalDisk'" & _
        " AND TargetInstance.DriveType = 2"
     
    WScript.Echo "Ожидаем события ..."
    While (True)
        Wscript.Sleep(1000)
    Wend
    Пример сценария асинхронного отслеживания подключения дисковых устройств USB.
    Последний раз редактировалось Iron Monk; 29.03.2010 в 16:17. Причина: Добавлено

  16. #35
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для antanta
    Регистрация
    27.12.2008
    Адрес
    Алматы
    Сообщений
    687
    Вес репутации
    530
    Цитата Сообщение от Iron Monk Посмотреть сообщение
    Каким образом стандартными методами?
    То есть, WMI таки работает? Вот и чудненько. Не пременю скопипастить на черный день. Респект полиглотам.
    А оленя - лучше!
    По поводу бабушек, существуют средства удаленного администрирования. Бабушек ничто не потревожит. Тут возможен холивор, но все же... pstools от Руссиновича со товарищи рулит в локалке. Хотя, некоторые , как я понял, могут обойтись "голыми руками" (тем же WMI)

  17. #36
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для Iron Monk
    Регистрация
    04.02.2010
    Сообщений
    1,106
    Вес репутации
    279
    Цитата Сообщение от antanta Посмотреть сообщение
    могут обойтись "голыми руками" (тем же WMI
    Кабы не ентот ужас:
    Код:
    While (True)
        Wscript.Sleep(1000)
    Wend
    уж лучше окошками сообщение ждать, чем постоянный опрос. Хотя, может и это обойти можно.

  18. #37
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для antanta
    Регистрация
    27.12.2008
    Адрес
    Алматы
    Сообщений
    687
    Вес репутации
    530
    "Голыми руками" - это про удаленку через WMI. Тот же RPC, там проблем быть не должно. По ссылке, которую я приводил, в самом конце было про "Создание постоянных потребителей событий WMI". Как я и говорил, для меня это темный лес. Да еще и не нужный. Интуиция подсказывает, что копать нужно сюда (в отличие от "Создание временных потребителей событий WMI" , где используются WScript.Timeout = XXXX типа sleep). Каюсь еще раз, это все мои предположения, основанные на отрывочных знаниях о COM. Как-то это просто должно быть применимо к теме. Винду не ламеры писали (только не цитируйте меня на ЛОРе ).
    Я и сам любитель "штатных" средств, но этот их ООП - это слишком.

  19. #38
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для Iron Monk
    Регистрация
    04.02.2010
    Сообщений
    1,106
    Вес репутации
    279
    Цитата Сообщение от antanta Посмотреть сообщение
    "Создание постоянных потребителей событий WMI"
    Создаем текстовый файл:
    Код:
    #pragma namespace ("\\\\.\\root\\subscription")
    instance of ActiveScriptEventConsumer as $CONSUMER
    {
    Name = "USBConsumer";
    KillTimeout = 300;
    ScriptingEngine = "VBScript";
    ScriptFileName = "c:\\windows\\system32\\wbem\\USB.vbs";
    };
    instance of __EventFilter as $FILTER
    {
    Name = "USBFilter";
    Query = "SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE TargetInstance ISA"
    "\"Win32_LogicalDisk\"AND TargetInstance.DriveType = 2" ;
    QueryLanguage = "WQL";
    EventNamespace = "root\\CIMv2";
    };
    instance of __FilterToConsumerBinding
    {
    Consumer = $CONSUMER;
    Filter = $FILTER;
    };
    Сохраняем его как C:\USB.mof
    Для того чтобы созданный нами MOF-файл был импортирован в репозиторий WMI и события подключения USB FlashDrive стали отлавливаться, нам необходимо скомпилировать этот MOF-файл:
    Код:
    mofcomp c:\usb.mof
    Делаем скрипт USB.vbs:
    Код:
    Set oUSB = CreateObject("Wscript.Shell")
    oUSB.Run("cmd.exe")
    и забрасываем его в папку c:\windows\system32\wbem. Теперь при подключении съемного диска запускается cmd.exe(можно посмотреть в процессах). Работает, блин...
    Последний раз редактировалось Iron Monk; 29.03.2010 в 23:49.

  20. #39
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для antanta
    Регистрация
    27.12.2008
    Адрес
    Алматы
    Сообщений
    687
    Вес репутации
    530
    Цитата Сообщение от Iron Monk Посмотреть сообщение
    Теперь при подключении съемного диска запускается cmd.exe(можно посмотреть в процессах). Работает, блин...
    Вот и чудненько. Кстати, запускается от SYSTEM.

  21. #40
    Senior Member Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для Iron Monk
    Регистрация
    04.02.2010
    Сообщений
    1,106
    Вес репутации
    279
    Цитата Сообщение от antanta Посмотреть сообщение
    Вот и чудненько. Кстати, запускается от SYSTEM.
    Совершенно верно, поэтому доступ к телу, то бишь скрипту, желательно ограничить от юзверей.

Страница 2 из 4 Первая 1234 Последняя

Похожие темы

  1. Как зафиксировать яркость монитора на ноутбуке?
    От Патриция в разделе Аппаратное обеспечение
    Ответов: 2
    Последнее сообщение: 24.12.2010, 23:59
  2. не форматируются флешки
    От marwika в разделе Помогите!
    Ответов: 8
    Последнее сообщение: 02.04.2010, 14:28
  3. Вирусы с флешки
    От AleXPander в разделе Помогите!
    Ответов: 4
    Последнее сообщение: 05.10.2009, 18:59
  4. Бут с флешки
    От Dark_Blaze в разделе Аппаратное обеспечение
    Ответов: 6
    Последнее сообщение: 18.05.2007, 12:56

Метки для этой темы

Свернуть/Развернуть Ваши права в разделе

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Page generated in 0.00911 seconds with 17 queries