<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: Скрипт не отпускает флешку]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5097&amp;type=atom" />
	<updated>2010-10-30T06:54:33Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=5097</id>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Скрипт не отпускает флешку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41042#p41042" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serrrr пишет:</cite><blockquote><p>«Unlocker» у меня установлен, но с его помощью отследить не удаётся. Он же используется для удаления файлов, а любой файл с флешки удаляется свободно.</p></blockquote></div><p>1. Он используется прежде всего для отслеживания каким процессом заблокирован файл. Удаление/перемещение и т.п. — побочные функции.<br />2. Как именно отслеживали? Находясь на уровне диска? Попробуйте, при наличии вышеописанной ситуации, имея текущим диском <strong>не</strong> диск с флэшкой, выполнить такую команду:<br /></p><div class="codebox"><pre><code>&quot;%ProgramFiles%\Unlocker\Unlocker.exe&quot; &lt;буква устройства смонтированной флэшки&gt;:\</code></pre></div><p>например<br /></p><div class="codebox"><pre><code>&quot;%ProgramFiles%\Unlocker\Unlocker.exe&quot; J:\</code></pre></div><p>Но, подозреваю, что блокировал её упомянутый в первом посте скрипт.<br /></p><div class="quotebox"><cite>serrrr пишет:</cite><blockquote><p>Теперь флешка отключается с первого раза, только без &quot;On Error Resume Next&quot; обойтись не получается, при отсутствии на флешке файла proverka1.txt выдаёт ошибку.</p></blockquote></div><p>Ознакомьтесь с <a href="http://forum.script-coding.com/rules.html">Правилами форума, п. 4.12</a>, после чего продолжим уже предметный разговор.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-10-30T06:54:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41042#p41042</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Скрипт не отпускает флешку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41017#p41017" />
			<content type="html"><![CDATA[<p>«Unlocker» у меня установлен, но с его помощью отследить не удаётся. Он же используется для удаления файлов, а любой файл с флешки удаляется свободно. Поэтому решил не морочить голову ни себе , ни людям и послушал доброго совета, взял другой скрипт. </p><div class="codebox"><pre><code>set objwmi = getobject(&quot;winmgmts:{impersonationlevel=impersonate}!\\.\root\cimv2&quot;)
set disks = objwmi.ExecNotificationQuery(&quot;SELECT * FROM __InstanceCreationEvent &quot; _
          &amp; &quot;WITHIN 1 WHERE TargetInstance ISA &#039;Win32_LogicalDisk&#039; and TargetInstance.DriveType = 2&quot;)
set fso = createobject(&quot;scripting.filesystemobject&quot;)
    Set objFSO   = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)
do while true
    set remdisk = disks.nextevent
        set ws=createobject(&quot;wscript.shell&quot;)
Set FSO=CreateObject(&quot;Scripting.FileSystemObject&quot;) 
    if remdisk.TargetInstance.DeviceID &lt;&gt; &quot;A:&quot; then _
    fso.copyfile &quot;C:\1.txt&quot;, remdisk.TargetInstance.DeviceID &amp; &quot;\&quot;
    ws.run remdisk.TargetInstance.DeviceID &amp; &quot;\SKL\proverka.exe&quot;, 0, false
 If objFSO.FileExists(remdisk.TargetInstance.DeviceID &amp; &quot;\SKL\proverka1.txt&quot;) Then
        ws.run(&quot;C:\proverka1.exe&quot;), 0, false
    End If   
loop</code></pre></div><p>Теперь флешка отключается с первого раза, только без &quot;On Error Resume Next&quot; обойтись не получается, при отсутствии на флешке файла proverka1.txt выдаёт ошибку.</p>]]></content>
			<author>
				<name><![CDATA[serrrr]]></name>
			</author>
			<updated>2010-10-29T12:06:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41017#p41017</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Скрипт не отпускает флешку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40990#p40990" />
			<content type="html"><![CDATA[<p>1. Загрузите «Unlocker» и попробуйте отследить с помощью него, чем занято устройство.<br /></p><div class="quotebox"><blockquote><p>2. Запретить нужно человеку, находящемуся за компьютером, просматривать определённые типы файлов&nbsp; с нескольких конкретных&nbsp; флешек, при этом с других флешек он эти типы файлов просматривать может</p></blockquote></div><p>Нельзя. Кроме того, кроме Проводника существуют и другие файловые менеджеры.<br /></p><div class="quotebox"><blockquote><p>Может быть как-то обыграть наличие на этих флешках какого-нибудь файла и при его наличии запретить монтирование этой флешки.</p></blockquote></div><p>Монтируются они системой в автоматическом режиме, если сие отключить — теоретически можно, но не думаю, что кто-то захочет монтировать «ручками»:<br /></p><div class="quotebox"><blockquote><p>…ежедневно … несколько десятков флешек</p></blockquote></div><div class="codebox"><pre><code>    \\?\Volume{19a771ac-c879-11df-867c-806d6172696f}\
    \\?\Volume{5beae64f-d6fe-11df-9394-cd3a53f5826e}\
    \\?\Volume{5beae651-d6fe-11df-9394-90bbeda6012e}\
    \\?\Volume{b9c424ee-c86f-11df-938e-806d6172696f}\
    \\?\Volume{b9c424ef-c86f-11df-938e-806d6172696f}\
    \\?\Volume{19a771aa-c879-11df-867c-806d6172696f}\
    \\?\Volume{74dbb846-c861-11df-8b37-0017312d9bef}\
    \\?\Volume{f07625aa-ce16-11df-9393-8aa36c28ea4d}\
    \\?\Volume{f07625ab-ce16-11df-9393-8aa36c28ea4d}\</code></pre></div><p>Также можно попытаться отслеживать монтирование и при наличии определённой смонтированной флэшки размонтировать её и т.п. Муторно.<br />3. а) да; б) утечка памяти — это разрастание занимаемой процессом памяти, working set («Память-использование» в «Диспетчере задач»); загрузка процессора тут не при чём. В Вашем случае это будет не особо заметно, потому как менеджер очистки памяти будет периодически подчищать автоматом.<br />4. Поищите по форуму насчёт других способов отслеживания подключенных флэшек. Кроме той темы в Коллекции, где Вы брали данный кусок скрипта, есть и другие способы. Помимо того, поищите и в <a href="http://forum.script-coding.com/viewforum.php?id=1">«Разработке…»</a>, откуда в Коллекцию и попадают скрипты. Я против не самого «On Error Resume Next», а против бездумного его использования.<br />5. Ясно.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-10-28T08:12:04Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40990#p40990</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Скрипт не отпускает флешку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40988#p40988" />
			<content type="html"><![CDATA[<p>1.	ОС – XP 3 сервис пак, установлена&nbsp; USB Safely Remove, в ней нажимаю безопасно извлечь, иногда останавливает сразу, но чаще выскакивает окно «невозможно остановить и в нём написано о том , что программа блокирующая флешку не найдена». В этом же окне нажимаю «стоп ещё раз», приходится нажимать от одного до нескольких раз, после этого флешка останавливается. Когда за компьютером я мне не трудно нажать несколько раз, хотя охота понять почему не останавливает с первого раза, а когда не я флешка, если не остановлена с первого раза, просто выдёргивается.<br />2.	Запретить нужно человеку, находящемуся за компьютером, просматривать определённые типы файлов&nbsp; с нескольких конкретных&nbsp; флешек, при этом с других флешек он эти типы файлов просматривать может, или запретить ему этими флешками совсем пользоваться «монтировать».&nbsp; Но на других компьютерах они должны работать нормально. Может быть как-то обыграть наличие на этих флешках какого-нибудь файла и при его наличии запретить монтирование этой флешки. Все работают под одной учёткой, несколько устанавливать не получится.<br />3.	Про дублирование, приведённый кусок кода необходимо удалить? А как определить утечку памяти, в диспетчере задач загрузка ЦП 1-2%?<br />4.	Если не использовать «On Error Resume Next», выскакивает сообщение диск такой-то не найден. А что вы посоветуете , что бы оно не выскакивало? Как организовать перебор дисков?<br />5.	Скрипт находится в автозагрузке, при подключении флешки, запускается с флешки при наличии программа proverka, потом проверяется на флешке наличие файла proverka1.txt, и при его нахождении запускается программа с жёсткого диска proverka1.exe. Перед безопасным извлечением проверял в диспетчере задач в процессах ни proverka1.exe, ни proverka.exe не находятся.</p>]]></content>
			<author>
				<name><![CDATA[serrrr]]></name>
			</author>
			<updated>2010-10-28T07:15:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40988#p40988</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Скрипт не отпускает флешку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40959#p40959" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serrrr пишет:</cite><blockquote><p>не находит программы, блокирующей её, но и не отключает.</p></blockquote></div><p>Какая ОС. Как определяли, что «не находит программы, блокирующей её».<br /></p><div class="quotebox"><cite>serrrr пишет:</cite><blockquote><p>2. Ежедневно к компьютеру подключается несколько десятков флешек, имеется несколько конкретных флешек которым нужно запретить просматривать определённые типы файлов…</p><p>…чтобы на другие запрет не распространялся, но на других компьютерах они бы просматривать могли</p></blockquote></div><p>Кому что нужно запретить? Флэшкам?<br /></p><div class="codebox"><pre><code>            …
            If Current = False And Flag = True Then
                Set FSO=CreateObject(&quot;Scripting.FileSystemObject&quot;) 
                …</code></pre></div><p>Во-первых, дублирование. Во-вторых, внутри цикла, — у Вас идёт утечка памяти.</p><p>Для начала, ответьте, пожалуйста, на вопрос:<br /></p><div class="quotebox"><cite>Правила форума пишет:</cite><blockquote><p>3.10. Если Вы публикуете ссылку на свою разработку или публикуете код своего скрипта, объясните внятно, <span style="color: orange">зачем нужна эта разработка или скрипт</span>, как это запустить и как это использовать.<br />…</p></blockquote></div><p>P.S. Откровенно говоря, не знаю, как коллеги, а у меня сразу отпадает желание разбираться, когда я вижу «гольный» «On Error Resume Next» в начале скрипта.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-10-27T16:53:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40959#p40959</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBScript: Скрипт не отпускает флешку]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40932#p40932" />
			<content type="html"><![CDATA[<p>Проблема такая, есть скрипт который находится в автозагрузке, работает нормально, но есть <br />два вопроса:<br />1. При отключении флешки через безопасное отключение, с первого раза не удаётся её отключить, не находит программы, блокирующей её, но и не отключает. Приходится несколько раз нажимать на безопасное отключение, пока отключит. Помогите подправить скрипт, по-видимому, что-то с циклом.<br />2. Ежедневно к компьютеру подключается несколько десятков флешек, имеется несколько конкретных флешек которым нужно запретить просматривать определённые типы файлов<br />mp3, jpeg, при этом, чтобы на другие запрет не распространялся, но на других компьютерах они бы просматривать могли. В крайнем случае запретить монтирование или полностью работу с этими флешками. Что посоветуете добавить в этот скрипт, чтобы решить эту задачу? И вообще возможно ли это с помощью скрипта? Спасибо.<br /></p><div class="codebox"><pre><code>On Error Resume Next
Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
set ws=createobject(&quot;wscript.shell&quot;)
colDrives = Split(&quot;B D E F G H I J K L M N O P Q R S T U V W X Y Z&quot;)
Set dictDrives = CreateObject(&quot;Scripting.Dictionary&quot;)
For Each Drive In colDrives
    Set Drv = FSO.GetDrive(Drive &amp; &quot;:&quot;)
    If Err.Number Then
        dictDrives.Add Drive &amp; &quot;:&quot;, False
    Else
        If Drv.DriveType = 1 And Drv.IsReady Then
            dictDrives.Add Drive &amp; &quot;:&quot;, True
        Else
            dictDrives.Add Drive &amp; &quot;:&quot;, False
        End If
    End If
    Err.Clear
Next
While True
    For Each Drive In dictDrives.Keys
        Set Drv = FSO.GetDrive(Drive)
        If (Err.Number) Or (Drv.IsReady = False) Or (Drv.DriveType &lt;&gt; 1) Then
            Flag = False
        Else
            Flag = True
        End If
        Err.Clear
        Current = dictDrives.Item(Drive)
        If Current &lt;&gt; Flag Then
            If Current = False And Flag = True Then
                Set FSO=CreateObject(&quot;Scripting.FileSystemObject&quot;) 
                ws.run FSO.BuildPath(Drive, &quot;SKL\proverka.exe&quot;), 0, false
If   .FileExists(.BuildPath(Drive, &quot;SKL\proverka1.txt&quot;)) = True Then 
      ws.run(&quot;C:\proverka1.exe&quot;), 0, false
    End If
            End If
            dictDrives.Item(Drive) = Flag
        End If
    Next
    WScript.Sleep 1000
Wend</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serrrr]]></name>
			</author>
			<updated>2010-10-27T11:36:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40932#p40932</id>
		</entry>
</feed>
