<?xml version="1.0" encoding="utf-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title><![CDATA[Форум программистов и сисадминов Киберфорум - Блоги - Alex Dragokas' Blog. Автор Dragokas]]></title>
		<link>https://www.cyberforum.ru/blogs/218284/</link>
		<description>КиберФорум - форум программистов, системных администраторов, администраторов баз данных, компьютерный форум, форум по электронике и бытовой технике, обсуждение софта. Бесплатная помощь в решении задач по программированию и наукам, решение проблем с компьютером, операционными системам</description>
		<language>ru</language>
		<lastBuildDate>Fri, 08 May 2026 06:56:22 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>60</ttl>
		<image>
			<url>https://www.cyberforum.ru//cyberstatic.net/images/misc/rss.jpg</url>
			<title><![CDATA[Форум программистов и сисадминов Киберфорум - Блоги - Alex Dragokas' Blog. Автор Dragokas]]></title>
			<link>https://www.cyberforum.ru/blogs/218284/</link>
		</image>
		<item>
			<title>Проверка электронной цифровой подписи Authenticode</title>
			<link>https://www.cyberforum.ru/blogs/218284/4744.html</link>
			<pubDate>Wed, 10 May 2017 23:28:03 GMT</pubDate>
			<description>Часть 1. Кусочек теории. (https://www.cyberforum.ru/faq/thread1978422.html) 
 
Часть 2. Описание...</description>
			<content:encoded><![CDATA[<div><a href="https://www.cyberforum.ru/faq/thread1978422.html">Часть 1. Кусочек теории.</a><br />
<br />
<a href="https://www.cyberforum.ru/faq/thread1978426.html">Часть 2. Описание реализации программы проверки подписей</a><br />
<br />
<a href="https://www.cyberforum.ru/faq/thread1978430.html">Часть 3. Программа проверки Authenticode ЭЦП</a></div>

]]></content:encoded>
			<dc:creator>Dragokas</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/218284/4744.html</guid>
		</item>
		<item>
			<title>Как получить ЭЦП для подписания документов (для жителей Украины)</title>
			<link>https://www.cyberforum.ru/blogs/218284/4636.html</link>
			<pubDate>Fri, 24 Mar 2017 14:14:46 GMT</pubDate>
			<description><![CDATA[Предполагается, что вы являетесь клиентом ПриватБанка. 
 
Войдите в *Приват24* => *Бизнес* =>...]]></description>
			<content:encoded><![CDATA[<div>Предполагается, что вы являетесь клиентом ПриватБанка.<br />
<br />
Войдите в <b>Приват24</b> =&gt; <b>Бизнес</b> =&gt; <b>Цифровые подписи</b>, получить сертификат. <br />
Проверьте данные. Придумайте пароль для сертификата.<br />
Также Вам потребуется скачать специальное расширение для браузера и клиентское ПО.<br />
<br />
Сертификат будет бесплатно получен и загружен в указанную Вами папку на диске (у меня - C:\kEYS).<br />
<br />
Формат файла <b>jks</b>. Это Java Keystore или файл хранилища сертификатов открытых ключей.<br />
<br />
<b>JKS =&gt; CER</b><br />
<br />
Если вам не подходит этот формат (например, какая-то бухгалтерская программа не поддерживает его),<br />
вы можете сконвертировать такой файл, например в .cer<br />
Для этого, скачайте: Java Runtime Environment.<br />
<br />
Откройте консоль: Win + R, cmd<br />
<br />
Перейдите в папку JRE. У меня это:<br />
<div class="codeblock"><table class="winbatch"><thead><tr><td colspan="2" id="338785996"  class="head">Windows Batch file</td></tr></thead><tbody><tr class="li1"><td><div id="338785996" style="height: 46px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
</pre></td><td class="de1"><pre class="de1"><span class="kw2">cd</span> <span class="co101">/d</span> <span class="st0">&quot;C:\Program Files (x86)\Java\jre1.8.0_91\bin&quot;</span></pre></td></tr></table></div></td></tr></tbody></table></div>Узнайте алиас записи вашего сертификата в файле-хранилище, указав полный путь к нему:<br />
<br />
<div class="codeblock"><table class="winbatch"><thead><tr><td colspan="2" id="877631208"  class="head">Windows Batch file</td></tr></thead><tbody><tr class="li1"><td><div id="877631208" style="height: 46px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
</pre></td><td class="de1"><pre class="de1">keytool <span class="co101">-list</span> <span class="co101">-keystore</span> C:\kEYS\pb_3225907153.jks</pre></td></tr></table></div></td></tr></tbody></table></div>Введите пароль от сертификата и получите нечто вроде:<br />

<table width="95%"  class="bbcode_maincontainer"><tr><td>
	<div class="bbcode_container">
	  <div class="bbcode_quote">
	    <div class="btbtbt">
		<div class="quote_container">
	      	<div class="bbcode_quote_container"></div>
	       	<div class="bbcode_postedby">
	         	
	        </div>
	        <div class="message">Enter keystore password:<br />
<br />
Keystore type: JKS<br />
Keystore provider: SUN<br />
<br />
Your keystore contains 1 entry<br />
<br />
<b>pb_sign_123456789</b>, 18.01.1970, PrivateKeyEntry,<br />
Certificate fingerprint (SHA1): xxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
	      </div>
			</div> 
		</div>
	</div>
</td></tr></table>Далее выполняем такую команду, подставив алиас, путь к файлу .jks и новому файлу .cer:<br />
<div class="codeblock"><table class="winbatch"><thead><tr><td colspan="2" id="397452695"  class="head">Windows Batch file</td></tr></thead><tbody><tr class="li1"><td><div id="397452695" style="height: 46px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
</pre></td><td class="de1"><pre class="de1">keytool <span class="co101">-export</span> <span class="co101">-alias</span> pb_sign_123456789 <span class="co101">-file</span> c:\keys\my.cer <span class="co101">-keystore</span> C:\kEYS\pb_3225907153.jks</pre></td></tr></table></div></td></tr></tbody></table></div>Должны получить ответ:<br />

<table width="95%"  class="bbcode_maincontainer"><tr><td>
	<div class="bbcode_container">
	  <div class="bbcode_quote">
	    <div class="btbtbt">
		<div class="quote_container">
	      	<div class="bbcode_quote_container"></div>
	       	<div class="bbcode_postedby">
	         	
	        </div>
	        <div class="message">Certificate stored in file &lt;c:\keys\my.cer&gt;</div>
	      </div>
			</div> 
		</div>
	</div>
</td></tr></table></div>

]]></content:encoded>
			<dc:creator>Dragokas</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/218284/4636.html</guid>
		</item>
		<item>
			<title>Чем кормить зомби, если он заразился простудой</title>
			<link>https://www.cyberforum.ru/blogs/218284/4406.html</link>
			<pubDate>Mon, 26 Sep 2016 15:14:55 GMT</pubDate>
			<description>Текст писал для фанов игры Left4dead, так что оригинальный стиль и терминологию оставил без...</description>
			<content:encoded><![CDATA[<div><i>Текст писал для фанов игры Left4dead, так что оригинальный стиль и терминологию оставил без изменений.</i><br />
<br />
Зима приближается…<br />
Ваши зомби перестали на вас нападать, потому что болеют простудой. А с ними и вы. Насморк, кашель, повышенная температура – первые симптомы.<br />
Что же делать? Как вернуть зомби в прежнюю форму? - Спрашивали напарники. А вот как всё было:<br />
<br />
Как-то в очередной раз за непыльной работёнкой (преследуя по кровавому пути на станции Bloody way подстреленного зомби) собрались Зои в роли ёжика, Френсис в роли енота, Ник в роли биззи, Билл в роли зебры, Эллис в роли мистера :З, Тренер в роли киллера и Луис, который обещал всех скопировать и всем вставить.<br />
Все обсуждали раненного зомби, который странно похрюкивал. Сначала подумали, что его обплевал Толстяк (L4D), но зебра сказал, что это обычная простуда и знает как его вылечить, во что и обещал посвятить избранных, открыв святой пергамент. Вот же он:<br />
<br />
<b>Этап 1. Вода – это жизнь.</b><br />
Итак, нужно обязательно запастись такой едой:<br />
<br />
1. Мёд (хороший, пахущий, не разведённый какой-то водой)<br />
2. Лимоны<br />
3. Корень имбиря<br />
4. Чай или кофе &quot;Жокей&quot; (L4D2).<br />
<br />
В течение дня как можно больше пейте жидкости. Это поможет вывести инфекцию.<br />
ПОВТОРЮ. Пейте много воды. + Витамин C, либо чай с шиповником (минимум 1 грамм / на день). Добавьте в свой ежедневный рацион - перец.<br />
Чай с выжатым лимоном (1/3 - 1/4 часть лимонки), да по-горячее и сразу стараться пить ещё горячим.<br />
Раза 3-4 в день можно добавить к чаю неполную ложку (можно меньше) имбиря, предварительно пропустив его через тёрку. Он беленький, похож на репу :)<br />
<br />
!!! Не бросать мёд в чай !!! Высокая температура испортит его свойства. Просто ежьте.<br />
!!! Чистите зубы !!! (чаще чем обычно, после еды). При потреблении высокой концентрации лимонной кислоты есть большой риск повредить эмаль на зубах, поэтому хотя бы прополосните рот, если любите чай с большим кол-вом лимона (и не важно, сколько вы насыпали сахара, он обычно и не нужен для компенсации вкуса, если есть мёд).<br />
<br />
<b>Этап 2. Ингаляция – запах услышат все зомби.</b><br />
Обычно проводится с помощью специального аппарата. Но мы сделаем её эффективней и с помощью подручных средств.<br />
<br />
Нужны такие компоненты:<br />
1. Мята в виде масла (высококонцентрированное).<br />
2. Эвкалипт в виде масла (высококонцентрированное).<br />
3. Сода<br />
4. Соль<br />
<br />
Возьмите:<br />
1. Платочек под руки (по прямому назначению, сами догадаетесь)<br />
2. Полотенце<br />
3. Шарфик<br />
4. Часы<br />
5. Кастрюлю (не очень большую) до 20 см. в диаметре где-то.<br />
6. Второго зомби :) (сторожевой)<br />
<br />
Наберите в кастрюлю совсем немного воды (около 1 см. в глубину), поставьте ее на огонь да так, чтобы вам удобно было над ней наклоняться.<br />
<br />
!!! Внимание !!! Пока вода нагревается, Вам нужно принять чашку горячей воды или чая с лимоном и медом. Это чтобы подготовить и разогреть горло.<br />
<br />
Как только вода начнёт испаряться (или кипеть) прикрутите огонь до самого минимума так, чтобы шел только лёгкий пар.<br />
Добавьте в воду и размешайте:<br />
- 2 капли эвкалипта<br />
- 3 капли мяты<br />
- неполную столовую ложку соли.<br />
- неполную чайную ложку соды.<br />
<br />
и сразу приступайте к процедуре:<br />
<br />
Ложите на голову полотенце, можно сложить вдвое (это чтобы пар не уходил мимо, а задерживался). Руками держитесь по бокам за что-нибудь, удерживая себя и свою позицию.<br />
Опускаете голову над кастрюлей и понемногу вдыхаете пар чередуя:<br />
- минуту вдыхая носом, выдыхая ртом<br />
- минуту вдыхая ртом<br />
<br />
!!! Важно !!! Правильно выберите расположение головы над кастрюлей. Нос должен находится на ободом (дальний конец кастрюли), таким образом горло всегда будет находиться над кастрюлей и тоже будет получать обогрев паром.<br />
<br />
Правила безопасности:<br />
!!! Внимание !!! Пока вдыхаете, закрывайте глаза, не нужно чтобы такая смесь долго контактировала с ними. Для контроля расстояния, чтобы случайно не обжечься, используйте другие органы чувств.<br />
<br />
!!! Внимание !!! От процедуры может падать давление из-за чего можно потерять сознание. Контролируйте себя (или рядом стоящий человек вас). Если становится трудно себя чувствовать, можно сполоснуть лицо холодной водой и сразу же вернуться к процедуре.<br />
<br />
!!! Внимание !!! Будьте очень осторожны с полотенцем, смотрите, чтобы оно не загорелось, т.к. вы очень низко наклонились над плитой.<br />
<br />
!!! Внимание !!! Не обожгите дыхательные пути. У каждого человека разная чувствительность. Вы периодически должны чувствовать жжение в носу / горле. Не вдыхайте резко, особенно носом, дышите плавно. Если нос забит, у Вас есть под рукой платочек. Дышите плавно, но полностью, используя весь объем груди. Если почувствовали сильное жжение, просто приподнимите голову немного выше. Но не переусердствуйте. Голова должна быть всегда опущена низко, на сколько возможно, чтобы получить максимальный эффект и от обогрева. <br />
<br />
Если выдержите процедуру в течение 15 минут – это очень хорошо. Для первого раза можете и 5-10 минут (чувствуйте по себе, сколько сможете). <br />
<br />
!!! Важно !!! <br />
Как только закончите сразу же оберните горло шарфом и ложитесь в кровать, накрыв нос одеялом, чтобы не поступал холодный воздух. Постарайтесь подышать через одеяло, пока в вашей дыхательной системе не понизится температура (хотя бы минут 15-20). <br />
<br />
Купите звёздочку. Натуральную, не подделку. Если ей намажетесь при насморке, должно чувствоваться жжение в носу. Если его нет, это бесполезная подделка. Также можете на ночь слегка намазать лицо и руки. Это поможет отогнать заражённых мутировавших комаров, более известных как Курильщик (L4D).<br />
<br />
<b>Этап 3. Горчица – наш друг. </b><br />
!!! Предупреждение !!! Нельзя парить ноги, если Ваша температура тела выше … (часть текста была оторвана взрывом Гранаты (L4D)).<br />
... но я всё таки нашел это тфрагмент.<br />
Итак, нельзя парить ноги, если температура тела превышает 37,5 С. Здесь Вы рискуете больше навредить себе.<br />
Нужен:<br />
1. Широкий тазик. <br />
2. Большое кол-во горячей воды (пусть стоит у вас на плите в большой ёмкости и всё время нагревается до состояния кипения). Наливать будете черпаком.<br />
3. Горчица.<br />
<br />
1. Сперва небольшое кол-во горячей (ещё не кипящей) воды наливается в тазик. Ваши ноги должны постепенно привыкнуть к этой температуре. Как только вы перестаёте боятся этой температуры, другой человек медленно насыпает горчицы (вы почувствуете пощипывание, к которому должны привыкнуть). Покрутите ногами :) Вы должны привыкнуть, прежде чем приступим к пунккту 2.<br />
2. Второй человек доливает горячую воду скраю тазика и параллельно досыпает горчицу. Терпите, но если оказалось слишком горячо, вытяните ноги. Можно даже на пару секунд в холодную воду. Продолжайте медленно доливать кипяток. Старайтесь не держать ноги на одном месте.<br />
Всего процедура длится около 20-30 мин.<br />
В конце процедуры быстро вытереть ноги, одеть тёплые носки и сразу ложиться в кровать.<br />
<br />
Внимание !!! Процедура может сопровождаться понижением давления, максимум - потеря сознания (будьте внимательны). В таком случае поместите на пару сек. ноги в холодную воду.<br />
<br />
Этап 4. Прополис – наш молотов для горла. <br />
Раздел в стадии наполнения.<br />
<br />
<b>Этап 5. (Опциональный). Спирт – убивает всё (или как быстро поднять себя на ноги без тиммейта). </b><br />
<br />
!!! Процедура особо опасна (при неграмотном применении) !!! <br />
<br />
Если вы почти утратили голос, а в горле как будто комок, и вам нужно уже завтра командовать ордой, можете попробовать положить на горло спиртовый компресс. <br />
<br />
Делается это примерно так. <br />
Вам нужна: <br />
<br />
1. Вата <br />
2. Марля (опционально) <br />
3. Полиэтиленовый пакет (разрезанный) <br />
4. Спирт 96 %-ный <br />
5. Шарф <br />
<br />
Наливаете в чашку спирт + воду (примерная пропорция: 1 к 3 в зависимости от чувствительности кожи и ее способности к поглощению, для начала попробуйте по-слабее, менее агрессивную пропорцию). Одна часть - это обычно 1 или 2 столовые ложки жидкости.<br />
<br />
Делаете из ваты прямоугольную накладку. Полностью смачиваете, вмокая ее в чашку. <br />
Ложите на горло. Сверху можно марлю. Сверху целофановый пакет, чтобы спирт не испарялся. Сверху можно слегка обмотать шарфом. <br />
<br />
Через 30 сек. и более вы должны почувствовать лёгкое повышение температуры, затем небольшое жжение в области горла. <br />
<br />
Жечь должно не слишком! (только пощипывать)<br />
<br />
!!! Внимание !!! Контролируйте жжение в течение первых нескольких минут. Оно должно зафиксироваться на определённом пороге чувствительности и не должно становиться печь сильнее, иначе вы рискуете сделать себе хуже. <br />
<br />
Если жжение стабилизировалось, с такой повязкой можете засыпать, убедившись что не слишком сильно затянули себе горло.<br />
<br />
<b>Правила выживания: </b><br />
1. Если принимаете ванную / душ, то хотя бы в течение 30 минут не выходите на улицу. <br />
2. Закаляйтесь: контрастный душ (чередование холодной и горячей воды).<br />
Каждый вечер / утро возьмите полотенце, намочите его полностью холодной водой, и СИЛЬНО разотритесь ним (спина, живот, особое внимание уделите областям под мышками). Делайте растирку в течении 1 минуты. Затем возьмите сухое полотенце с пупырышками и разотритесь насухо, пока вам не станет жарко. На этом и завершаете натирание. <br />
Во время сна старайтесь не прятать руки под одеяло.<br />
Если проснувшись с утра вы себя чувствуете как Громила (L4D2), перепутав дверь со стеной, самое время умыться холодной водой.<br />
3. Хорошо одевайтесь, даже дома. Теплые носки всегда, когда возможно (т.е. вообще всегда). Ноги в течение дня не должны быть холодными и тем более замерзать. <br />
4. Выполните последовательно все вышеописанные этапы по выживанию зомби ( + несколько раз на день повторите) и вы снова вернётесь в хорошую форму. <br />
5. Если температура вашего тела становится выше 37,8 C, самое время её сбить. Подойдёт аспирин и другие подобные средства. Нельзя допускать высоких температур. Это плохо отразится на внутренних органах в перспективе.<br />
6. Если во время сна вам мерещатся охотники (L4D), не засиживайтесь по ночам перед компьютером, делайте чаще перерывы и гимнастику для глаз.<br />
<br />
За исключением, пожалуй, закалки, все рекомендации связаны с временной профилактикой, которую придётся периодически повторять. Потому что каждый организм индивидуален, разный иммунитет, чувствительность. Как только вы идёте на работу, вы уязвимы от холода и других простуженных зомби. <br />
<br />
Поэтому еще раз – хорошо одевайтесь. <br />
А против других зомби могу посоветовать очень хорошо зарекомендовавшую антивирусную мазь для носа – «Оксолиновая мазь». Она частично обезвреживает инфекции, передающиеся капельным путём через нос. Мажьтесь перед выходом на прогулку или работу. <br />
<br />
Важно !!! <br />
Напоследок напомню: всё, описанное в статье, вы делаете на свой страх и риск. Я не отвечаю за последствия. Тем не менее, всё это я и мой друг (доктор) долгое время и успешно оттачивали и практиковали на себе. <br />
Описанные методы применяются в основном как профилактика и предупреждение простудного заболевания, а не его лечения. Во всех, а тем более запущенных случаях, обязательно обращайтесь к врачу в ближайшем к вам госпитале &quot;Милосердия&quot; (L4D). <br />
<br />
P.S. <br />
Эту статью я буду понемногу дополнять, т.к. ещё не нашел все свитки с тайными знаниями, которые в спешке спрятал 5 лет назад, убегая от самой древней ведьмы (а ведь крепкая была микстура, должна была сработать, даже зебру свалила). Но теперь ведьма разозлилась и поджидает вас спящей в самом тёмном уголке игры Left4dead. <br />
<br />
<b>Дополнительные средства:</b><br />
<br />
1. Лекарственные препараты против распираторных инфекций кашля):<br />
Обратите внимание на природные лекарственные препараты:<br />
- Ингалипт<br />
- Фалимит<br />
<br />
!!! Будьте внимательны !!! к инструкциям, особенно способу применения и противопоказаниям всех рекомендованных в статье средств (здесь, и вообще во всей статье), а также способу диагностики переносимости организма к ним.<br />
<br />
У Вас может быть аллергическая реакция на один из препаратов или растение. Не стоит сразу принимать в больших кол-вах вещества которые вы ни разу не пробовали. Лучший вариант - проконсультироваться с врачом.<br />
<br />
2. Разминка (массаж) области под кадыком.<br />
<br />
3. Можно полоскать горло спиртовой настойкой календулы:<br />
0,5 стакана теплой воды и 3-5 чайных ложек (или как можно больше) настойки.<br />
Полоскать горло в течении 30 мин. или больше.<br />
Для большего эффекта можно добавить чайную ложку выжатого в сок чеснока с добавкой мёда по вкусу.<br />
<br />
При признаках воспаления:<br />
Установка горчичников, можно распаренного капустного листа с мёдом.<br />
!!! Внимание !!! Горчичники нельзя ставить на позвоночник / сердце.<br />
<br />
Также снимает любое воспаление (дезинфицирующее действие) настойка прополиса (10%-ая).<br />
Вот здесь вообщем то верно описано как его готовить: <a rel="nofollow noopener noreferrer" href="http://www.ayzdorov.ru/tvtravnik_propolis.php" target="_blank" title="http://www.ayzdorov.ru/tvtravnik_propolis.php">http://www.ayzdorov.ru/tvtravnik_propolis.php</a><br />
Настоящий прополис похож на смолу чёрного-тёмно-коричневого цвета (вы конечно можете купить готовую настойку, но далеко не факт, что она будет хорошей).<br />
!!! Внимание !!! Возможна аллергическая реакция организма.<br />
Пить в течении 1 месяца по 3 раза в день по 10 капель за 1 час до еды.<br />
<br />
Также во время зимы понижается содержание витаминов в организме. Это ухудшает иммунитет. Принимайте различные мультивитаминные комплексы. Например, для насыщения витамином B подойдут таблетки &quot;Гинкго Билоба&quot;. Витамин С лучше всего брать в виде больших белых пилюль без примесей и красителей.<br />
<br />
Желаю Вам и вашим зомби здоровья, как у Танка (L4D) ! <br />
Искренне, Ваш Алекс aka Зебра.<br />
<br />
«&lt;-— Здесь место для рекламы средства &quot;Анти-Озверин&quot; :) -»&gt;</div>

]]></content:encoded>
			<dc:creator>Dragokas</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/218284/4406.html</guid>
		</item>
		<item>
			<title>Проверка ключей реестра на подверженность перенаправлению Wow6432 (redirected, shared, reflected)</title>
			<link>https://www.cyberforum.ru/blogs/218284/4277.html</link>
			<pubDate>Sat, 28 May 2016 10:40:52 GMT</pubDate>
			<description>Заметка находится здесь (https://www.cyberforum.ru/windows/thread1747714.html).</description>
			<content:encoded><![CDATA[<div><a href="https://www.cyberforum.ru/windows/thread1747714.html">Заметка находится здесь</a>.</div>

]]></content:encoded>
			<dc:creator>Dragokas</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/218284/4277.html</guid>
		</item>
		<item>
			<title>Мои проекты / статьи / руководства / исследования</title>
			<link>https://www.cyberforum.ru/blogs/218284/3628.html</link>
			<pubDate>Mon, 06 Jul 2015 19:20:31 GMT</pubDate>
			<description>*Мои проекты* 
Здесь я собрал проекты, над которыми уже работаю (планирую работать) длительное...</description>
			<content:encoded><![CDATA[<div><b><font color="Blue">Мои проекты</font></b><br />
Здесь я собрал проекты, над которыми уже работаю (планирую работать) длительное время:<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://github.com/dragokas/hijackthis" target="_blank" title="https://github.com/dragokas/hijackthis">HiJackThis+</a><br />
Спец. инструмент для борьбы с вредоносными и другими нежелательными программами<br />
<br />
<a rel="nofollow noopener noreferrer" href="http://safezone.cc/resources/check-browsers-lnk-by-dragokas-regist.122/" target="_blank" title="http://safezone.cc/resources/check-browsers-lnk-by-dragokas-regist.122/">Check Browsers' LNK by Dragokas &amp; regist</a><br />
Проверка ярлыков браузеров на наличие вредоносных ссылок<br />
<br />
<a rel="nofollow noopener noreferrer" href="http://safezone.cc/resources/clearlnk-udalenie-parametrov-zapuska-u-jarlykov.102/" target="_blank" title="http://safezone.cc/resources/clearlnk-udalenie-parametrov-zapuska-u-jarlykov.102/">ClearLNK</a><br />
Лечение ярлыков, измененных вследствие заражения системы Adware и другим вредоносным ПО.<br />
<br />
<br />
<br />
<b><font color="blue">Статьи</font></b><br />
<br />
<b>Анализ вредоносного ПО:</b><br />
<br />
<a rel="nofollow noopener noreferrer" href="https://virusnet.info/analiz-ishodnogo-koda-shifrovalshhika-hellokitty/" target="_blank" title="https://virusnet.info/analiz-ishodnogo-koda-shifrovalshhika-hellokitty/">Анализ исходного кода шифровальщика HelloKitty</a><br />
<br />
<a rel="nofollow noopener noreferrer" href="http://dragokas.com/tools/POC/raa_decryptor.js_" target="_blank" title="http://dragokas.com/tools/POC/raa_decryptor.js_">POC JScript дешифровщик RAA ransomware, если известен приватный ключ (написан на движке вируса).</a><br />
<br />
<a rel="nofollow noopener noreferrer" href="https://dragokas.com/mirror/sz/?id=threads/klassifikacija-jarlykov-windows-i-vidy-ix-zarazhenija.25723/" target="_blank" title="https://dragokas.com/mirror/sz/?id=threads/klassifikacija-jarlykov-windows-i-vidy-ix-zarazhenija.25723/">Классификация ярлыков Windows и виды их заражения</a><br />
<br />
<a rel="nofollow noopener noreferrer" href="https://dragokas.com/mirror/sz/?id=threads/analiz-osobyx-vidov-zarazhenij-s-pomoschju-check-browsers-lnk.27469/" target="_blank" title="https://dragokas.com/mirror/sz/?id=threads/analiz-osobyx-vidov-zarazhenij-s-pomoschju-check-browsers-lnk.27469/">Анализ особых видов заражений с помощью Check Browsers’ LNK</a><br />
<br />
<a rel="nofollow noopener noreferrer" href="https://dragokas.com/mirror/sz/?id=threads/shortcut-virus-remover-samomodificirujuschijsja-samoudaljajuschijsja-batnik-dlja-lechenija-fleshek.25162/" target="_blank" title="https://dragokas.com/mirror/sz/?id=threads/shortcut-virus-remover-samomodificirujuschijsja-samoudaljajuschijsja-batnik-dlja-lechenija-fleshek.25162/">Shortcut Virus Remover - самомодифицирующийся самоудаляющийся батник для лечения флешек</a> (*авт. прим.: не является вредоносным ПО)<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://dragokas.com/mirror/sz/?id=threads/analiz-worm-vbs-dinihou-i-sovety-po-udaleniju.25059/" target="_blank" title="https://dragokas.com/mirror/sz/?id=threads/analiz-worm-vbs-dinihou-i-sovety-po-udaleniju.25059/">Анализ Worm.VBS.Dinihou и советы по удалению</a><br />
<br />
<a rel="nofollow noopener noreferrer" href="https://dragokas.com/mirror/sz/?id=threads/spjaschij-zombi-pod-maskoj-majnera-vbs-btcmine-6.24010/" target="_blank" title="https://dragokas.com/mirror/sz/?id=threads/spjaschij-zombi-pod-maskoj-majnera-vbs-btcmine-6.24010/">Спящий зомби под маской майнера? [VBS.BtcMine.6]</a><br />
<br />
<a rel="nofollow noopener noreferrer" href="https://dragokas.com/mirror/sz/?id=threads/kak-snjat-shifrovanie-tela-vbscript.23900/" target="_blank" title="https://dragokas.com/mirror/sz/?id=threads/kak-snjat-shifrovanie-tela-vbscript.23900/">Как снять шифрование тела VBscript</a><br />
<br />
<b>Статьи по ОС Windows:</b><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread2203242.html">Дело о заблокированной переменной окружения %PATH%</a><br />
<br />
<a href="https://www.cyberforum.ru/blogs/218284/blog4744.html">Проверка электронной цифровой подписи Authenticode</a><br />
<br />
<a href="https://www.cyberforum.ru/blogs/218284/blog4636.html">Как получить ЭЦП для подписания документов (для жителей Украины)</a><br />
<br />
<a href="https://www.cyberforum.ru/windows/thread1747714.html">Проверка ключей реестра на подверженность перенаправлению Wow6432 (redirected, shared, reflected)</a><br />
<br />
<a href="https://www.cyberforum.ru/blogs/218284/blog3519.html">Роль AppUserModelID в группировке ярлыков на панели задач</a><br />
<br />
<a rel="nofollow noopener noreferrer" href="https://dragokas.com/mirror/sz/?id=threads/kak-rasschitat-podset.24323/" target="_blank" title="https://dragokas.com/mirror/sz/?id=threads/kak-rasschitat-podset.24323/">Как рассчитать подсеть</a><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread1016387.html">Настройка интерфейса и эффективное использование CMD</a><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread877664.html">Циклические операции и примеры (команда FOR в Windows Batch)</a> <br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread940954.html">SetLocal и расширенная обработка команд в Windows Batch</a><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread940942.html">Принцип составления однострочных команд Windows Batch</a><br />
<br />
<a href="https://www.cyberforum.ru/blogs/218284/blog713.html">Регистрация ActiveX-DLL без прав администратора (UAC включен)</a><br />
<br />
<a rel="nofollow noopener noreferrer" href="https://dragokas.com/mirror/sz/?id=threads/chernovik-peremennye-okruzhenija-v-os-windows-i-komandnoj-stroke.35922/" target="_blank" title="https://dragokas.com/mirror/sz/?id=threads/chernovik-peremennye-okruzhenija-v-os-windows-i-komandnoj-stroke.35922/">Переменные окружения в ОС Windows и командной строке, область видимости (черновой вариант)</a><br />
<br />
<b>О здоровье:</b><br />
<br />
<a rel="nofollow noopener noreferrer" href="https://dragokas.com/mirror/sz/?id=threads/chem-kormit-zombi-esli-on-zarazilsja-prostudoj.28252/" target="_blank" title="https://dragokas.com/mirror/sz/?id=threads/chem-kormit-zombi-esli-on-zarazilsja-prostudoj.28252/">Чем кормить зомби, если он заразился простудой</a><br />
(практические советы при распираторных заболеваниях)<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://dragokas.com/mirror/sz/?id=threads/applikator-kuznecova-spasenie-ot-boli-v-pojasnice-i-shee-zaschemlenija.43910/" target="_blank" title="https://dragokas.com/mirror/sz/?id=threads/applikator-kuznecova-spasenie-ot-boli-v-pojasnice-i-shee-zaschemlenija.43910/">Аппликатор Кузнецова - спасение от боли в пояснице и шее, защемления</a><br />
<br />
<a rel="nofollow noopener noreferrer" href="https://dragokas.com/mirror/sz/?id=threads/kak-bezboleznenno-pochistit-ushi.44269" target="_blank" title="https://dragokas.com/mirror/sz/?id=threads/kak-bezboleznenno-pochistit-ushi.44269">Как безболезненно почистить уши</a><br />
<br />
<b>Комментарии к статьям:</b><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread960106.html">ERRORLEVEL это не %ERRORLEVEL% (Raymond Chen)</a><br />
<br />
<a href="https://www.cyberforum.ru/windows10/thread1268502.html#post6681034">Windows 10: новые возможности и функции в командной строке (Rafael Rivera)</a><br />
<br />
<br />
<br />
<br />
<b><font color="Blue">Переводы:</font></b><br />
<br />
<a rel="nofollow noopener noreferrer" href="https://dragokas.com/mirror/sz/?id=threads/frst-tutorial/" target="_blank" title="https://dragokas.com/mirror/sz/?id=threads/frst-tutorial/">Официальное руководство по FRST (Farbar's Recovery Scan Tool)</a>.<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://hlmod.ru/forums/sourcepawn-sovety-dlja-novichkov-i-profi.145/" target="_blank" title="https://hlmod.ru/forums/sourcepawn-sovety-dlja-novichkov-i-profi.145/">[SourcePawn] Советы для новичков и профи</a><br />
<br />
<br />
<br />
<b><font color="blue">Руководства</font></b><br />
Просто инструкции или программы для облегчения сбора информации.<br />
<br />
<a href="https://www.cyberforum.ru/security/thread1352677.html">Куда сообщить о ложном срабатывании антивируса?</a><br />
<br />
<a href="https://www.cyberforum.ru/security/thread1352672.html">Как и куда можно отправить подозрительные файлы на анализ?</a><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread680829.html">Памятка по командам FTP</a><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread765601.html">Коды возврата ошибок (расшифровки ErrorLevel)</a><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread965202.html">Как запустить скрипт с повышенными привилегиями?</a><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread940961.html">Как добавить путь в переменную Path?</a><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread940957.html">Как диагностировать проблему или ошибки в синтаксисе, когда Bat-файл не работает или &quot;вылетает&quot; ?</a><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread738351.html">Русский текст в консоли</a><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread940960.html">Как задавать и получать аргументы Batch-файла?</a><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread940959.html">Структура кода Batch-файла</a><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread940958.html">Как создать Batch-файл</a><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread1502220.html">Задачи, легко реализуемые с помощью CMD (Windows Batch)</a><br />
<br />
<a href="https://www.cyberforum.ru/win-api/thread1497373.html#post7891735">Зачем нужны переменные среды и командная строка?</a><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread1502224.html">Соответствие команд MS-DOS командам Linux</a><br />
<br />
<br />
<br />
<b><font color="Blue">Мои программы:</font></b><br />
Здесь выложены наиболее полезные / или просто интересные из них:<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://www.safezone.cc/resources/virustotal-console-checker.233/" target="_blank" title="https://www.safezone.cc/resources/virustotal-console-checker.233/">VirusTotal Console Checker</a><br />
Скрипт для быстрой проверки файла в сервисе VirusTotal через контекстное меню.<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://www.safezone.cc/resources/snake-getmyparent.229/" target="_blank" title="https://www.safezone.cc/resources/snake-getmyparent.229/">Snake (GetMyParent)</a><br />
Позволяет отобразить цепочку вызовов процессов до интересующего, без использования специальных трейсеров<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://www.safezone.cc/resources/locker-unlocker-ntfs.223/" target="_blank" title="https://www.safezone.cc/resources/locker-unlocker-ntfs.223/">Locker / Unlocker NTFS</a><br />
Блокировка / Разблокировка папок и файлов с помощью установки прав DACL<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://www.safezone.cc/resources/registry-time-decoder.205/" target="_blank" title="https://www.safezone.cc/resources/registry-time-decoder.205/">Registry Time Decoder</a><br />
Преобразовывает в привычный формат DD.MM.YYYY hh:mm:ss даты, указанные в реестре в бинарном или Hex виде<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://www.safezone.cc/resources/deletetextbytags.204/" target="_blank" title="https://www.safezone.cc/resources/deletetextbytags.204/">DeleteTextByTags</a><br />
Поможет Вам удалить во всех файлах текст, который находится между указанными Вами тегами (вместе с самими тегами)<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://www.safezone.cc/resources/replacebyregular.203/" target="_blank" title="https://www.safezone.cc/resources/replacebyregular.203/">ReplaceByRegular</a><br />
Скрипт для замены текста во множестве файлов согласно регулярным выражениям<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://www.safezone.cc/resources/sysdrive-permissions-restorer.202/" target="_blank" title="https://www.safezone.cc/resources/sysdrive-permissions-restorer.202/">SysDrive Permissions Restorer</a><br />
Применяется, когда NTFS-права корня системного диска повреждены<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://www.safezone.cc/resources/clipboard-interceptor.177/" target="_blank" title="https://www.safezone.cc/resources/clipboard-interceptor.177/">Clipboard Interceptor</a><br />
Позволяет отслеживать изменение содержимого буфера обмена, и показывать путь к программе, которая изменила буфер<br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread783604-page2.html#post6297127">Concole Window Interceptor</a><br />
Автоматически подключается к любому всплывающему консольному окну и не дает его закрыть. Перехватывает текст.<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://www.safezone.cc/resources/system-file-replacer.167/" target="_blank" title="https://www.safezone.cc/resources/system-file-replacer.167/">System File Replacer</a><br />
Авто-скрипт для удобной замены системного файла, используется оператором для подготовки инструкции удалённому пользователю<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://www.safezone.cc/resources/filtracija-loga-sfc-scannow.123/" target="_blank" title="https://www.safezone.cc/resources/filtracija-loga-sfc-scannow.123/">Фильтрация лога SFC /scannow</a><br />
Фильтрует строки лога SFC, убирая успешные операции проверки. <br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread671391-page4.html#post6546852">CheckDisk Log by Dragokas</a><br />
Получение отчета проверки диска на ошибки<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://www.safezone.cc/resources/eventlog-errors.109/" target="_blank" title="https://www.safezone.cc/resources/eventlog-errors.109/">EventLog Errors</a><br />
Формирует HTML отчеты со списком системных ошибок и предупреждений из журнала событий<br />
<br />
<a href="https://www.cyberforum.ru/vbscript-wsh/thread671396.html#post5834951">GetCPUUsage</a><br />
Получение отчета о % нагрузки CPU для всех процессов в системе<br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread699180.html">AntiHidden</a><br />
Удаление последствий действия вредоносного ПО на съемном накопителе.<br />
<br />
<a rel="nofollow noopener noreferrer" href="http://safezone.cc/resources/codepage-repair-vosstanovlenie-kodirovki-russkix-shriftov.68/" target="_blank" title="http://safezone.cc/resources/codepage-repair-vosstanovlenie-kodirovki-russkix-shriftov.68/">Codepage Repair</a><br />
Восстановление русских шрифтов после сбоя, сброс настроек консоли<br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread671391-page4.html#post6196747">RegSystemLibraries</a><br />
Восстановление регистрации системных библиотек.<br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread671391-page4.html#post6190793">RakhniDecryptor (Kaspersky) Benchmark</a><br />
Подсчитывает производительность процессора на основе реальной задачи - дешифровка файла с помощью утилиты Kaspersky RakhniDecryptor.<br />
<br />
<a href="https://www.cyberforum.ru/vbscript-wsh/thread671396.html#post6546856">RegJump MOD</a><br />
Прыжок в ветку реестра, имя которой скопировано в буфер<br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread671391-page2.html#post4169398">Task Monitor</a><br />
Простой мониторинг и протоколирование запускаемых/завершаемых процессов<br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread671391-page2.html#post4370732">Код розы</a> :)<br />
Цветная роза на основе собственных недокументированных приёмов кодинга в консоли Windows<br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread671391.html#post3957293">Process Not Responding</a> (консольная)<br />
Отслеживание зависшего процесса и его перезапуск с указанным приоритетом<br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread783604-page2.html#post6296791">LimitRAM</a> (консольная)<br />
Ограничение максимального объема ОЗУ, используемой процессом.<br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread783604-page2.html#post5572907">Affinity</a> (консольная)<br />
Позволяет указать, на каких ядрах (в многоядерной системе) разрешено выполняться процессу (маска сходства).<br />
<br />
<a href="https://www.cyberforum.ru/blogs/218284/blog627.html">RemoveDrive by Uwe Sieber</a> (надстройка)<br />
Быстрое отключение всех флешек с обесточиванием двойным кликом.<br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread671391-page4.html#post5778966">IP Location Checker by Dragokas &amp; LAMM_-*-_VURDALAK</a><br />
Определение страны, города, IP Range и маски подсети по указанному IP / web-адресу.<br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread671391-page9.html#post16871583">FTP Sender</a><br />
Скрипт для отправки файлов на FTP/SFTP через Putty или Curl<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://dragokas.com/mirror/sz/?id=threads/podkljuchenie-virtualnogo-zhestkogo-diska-vhd-kak-pustoj-papki-s-pomoschju-simlinka.24554/" target="_blank" title="https://dragokas.com/mirror/sz/?id=threads/podkljuchenie-virtualnogo-zhestkogo-diska-vhd-kak-pustoj-papki-s-pomoschju-simlinka.24554/">Подключение виртуального жесткого диска VHD, как пустой папки с помощью симлинка</a><br />
<br />
<a href="https://www.cyberforum.ru/vbscript-wsh/thread671396-page2.html#post10439420">Registry Time Decoder</a><br />
VBS-скрипт преобразования дат из Unix-Time, FILETIME, SYSTEMTIME =&gt; DD.MM.YYYY hh:mm:ss (обычно используемых в реестре).<br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread990139.html">ViruLogs Collector by Dragokas</a> (проект заморожен)<br />
Автоматическое обновление и сбор логов AVZ, RSIT, SITLog для разбора консультантами ассоциации VirusNet в  разделе &quot;Лечение компьютерных вирусов&quot;<br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread866656.html">WinLock Defender [ W i L D ]</a> (проект заморожен)<br />
Автоматическое возобновление доступа к системе после заражения вирусами семейства WinLocker (SMS-трояны, вымогатели).<br />
<br />
<br />
<br />
<b><font color="blue">Исследования</font></b><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread1240784.html">Упаковка бинарных ресурсов в батник (&quot;Cabinet's Batch inline&quot; method by Dragokas)</a><br />
<br />
<a href="https://www.cyberforum.ru/visual-basic/thread1149081.html">Исследование макросов реестра Windows</a><br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread757799.html">Наиболее частые ошибки, заметки особенностей программинга BAT файлов, баги интерпретатора</a><br />
<br />
<a href="https://www.cyberforum.ru/vbscript-wsh/thread1005156.html">Быстрая &quot;распаковка&quot; бинарного ресурса из HTA на основе ADO.Stream</a> [ 50% завершено ]<br />
<br />
<a rel="nofollow noopener noreferrer" href="https://dragokas.com/mirror/sz/?id=threads/sposoby-zapuska-prilozhenij-s-ispolzovaniem-clsid.22879/" target="_blank" title="https://dragokas.com/mirror/sz/?id=threads/sposoby-zapuska-prilozhenij-s-ispolzovaniem-clsid.22879/">Способы запуска приложений с использованием CLSID</a><br />
<br />
<br />
<br />
<b><font color="Blue">Чужие статьи:</font></b><br />
Просто захотелось дать на них ссылки.<br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread1502227.html">Переменные среды в командной строке</a> (специалист, Вадим Стеркин aka Vadikan)<br />
<br />
<a href="https://www.cyberforum.ru/cmd-bat/thread1502253.html">Процесс conhost.exe - что это и для чего он запущен?</a> (Bodya (<a rel="nofollow noopener noreferrer" href="http://osmaster.org.ua/" target="_blank" title="http://osmaster.org.ua/">http://osmaster.org.ua/</a>))</div>

]]></content:encoded>
			<dc:creator>Dragokas</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/218284/3628.html</guid>
		</item>
		<item>
			<title>Роль AppUserModelID в группировке ярлыков на панели задач</title>
			<link>https://www.cyberforum.ru/blogs/218284/3519.html</link>
			<pubDate>Mon, 04 May 2015 20:40:39 GMT</pubDate>
			<description>*Роль AppUserModelID в группировке ярлыков на панели задач* 
 
Приветствую всех!!! 
 
Сегодня я...</description>
			<content:encoded><![CDATA[<div><div align="center"><font color="#0000ff"><b>Роль AppUserModelID в группировке ярлыков на панели задач</b></font></div><br />
Приветствую всех!!!<br />
<br />
Сегодня я расскажу, как группировать несколько программ, разработчиком которых являетесь Вы, под один значок ярлыка в панели задач.<br />
Метод работает для систем на базе ОС Windows 7/8/8.1/10.<br />
<br />
<img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=3168&amp;d=1430772066" border="0" alt="Several_Programs.png" style="margin: 5px" /><br />
<br />
Начиная с Windows 7, в систему введено понятие идентификатора <b>AppUserModelID</b>. Далее, я буду его называть коротко – <b>AppID</b>.<br />
Он представляет из себя строку до 128 символов максимум в формате <i>CompanyName.ProductName.SubProduct.Versi onInformation</i>. Этот формат является рекомендованным, но не обязательным.<br />
<br />
AppID может быть назначен:<br />
– процессу;<br />
– окну приложения;<br />
– ярлыку LNK.<br />
<br />
<b>Сразу скажу: чтобы сгруппировать все приложения под один значок, Вы должны назначить этим процессам и ярлыку, закрепленному на панели задач, одинаковый AppID.</b><br />
<br />
Это также повлияет на:<br />
– порядок поиска ярлыка панели задач для приложения (если бинарный файл был перемещен, то закрепленный значок все равно будет найден при запуске приложения);<br />
– скорость инициализации приложения;<br />
– видимость ярлыков в меню ПУСК. Если Ваши ярлыки ведут к одному приложению и различаются только аргументами, то без AppID, в меню ПУСК будет виден только 1 ярлык, остальные – скрыты (актуально дли систем на базе ОС Windows 8/8.1/10)<br />
<br />
Группировка нескольких программ под один значок может потребоваться по разным причинам. Например, Вы разрабатываете какое-нибудь хост-приложение, где порождается несколько дочерних процессов. При этом, данные процессы Вы не хотите скрывать, но и отображать миллион значков в панели задач для Вас тоже неприемлемо.<br />
<br />
Рассмотрим как это сделать подробнее на примере браузера от Майкрософт – Project Spartan…<br />
<br />
Бинарная структура предустановленного ярлыка <i>Microsoft.Spartan.Spartan.lnk</i> выглядит следующим образом:<br />
<br />
<img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=3169&amp;d=1430772066" border="0" alt="Spartan AppID.png" style="margin: 5px" /><br />
<br />
Она показывает, что к LNK присоединен в качестве метаданных AppID приложения ProjectSpartan:<br />
<i>Microsoft.Windows.Spartan_cw5n1h2txyewy! Microsoft.Spartan.Spartan</i><br />
(значение может изменяться от версии к версии).<br />
<br />
Вы можете сделать тоже самое:<br />
<br />
а) через инсталлятор приложения. Например, в <i>AdminStudio </i>через вкладу<i>«Shell Properties»</i>:<br />
<br />
<img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=3166&amp;d=1430772066" border="0" alt="Admin Studio.jpg" style="margin: 5px" /><br />
<br />
б) модифицировав готовый ярлык, используя библиотеку shell32.dll:<br />
<br />
1)  Сперва следует загрузить ярлык с помощью метода Load интерфейса IPersistFile, унаследованного от IShellLink.<br />
2)  Затем записать соответствующие метаданные с помощью интерфейса IPropertyStore, указав в качестве идентификатора GUID AppUserModel_ID – {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}<br />
<br />
Подробнее в MSDN: <a rel="nofollow noopener noreferrer" href="https://msdn.microsoft.com/en-us/library/windows/desktop/dd391569(v=vs.85).aspx" target="_blank" title="https://msdn.microsoft.com/en-us/library/windows/desktop/dd391569(v=vs.85).aspx">https://msdn.microsoft.com/en-... s.85).aspx</a><br />
<br />
Готовую программу на C++ с исходным кодом от David Roe Вы можете взять по адресу: <a rel="nofollow noopener noreferrer" href="https://code.google.com/p/win7appid/" target="_blank" title="https://code.google.com/p/win7appid/">https://code.google.com/p/win7appid/</a><br />
<br />
<img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=3167&amp;d=1430772066" border="0" alt="Set_AppID.png" style="margin: 5px" /><br />
<br />
в)  Есть и неординарный способ (чисто ради эксперимента). Если Вашему процессу назначен AppID, после его запуска выберите из контекстного меню иконки в панели задач пункт «Закрепить программу в панели задач». Это создаст ярлык уже с метаданными.<br />
<br />
Итак, записывать AppUserModelID в ярлык мы научились.<br />
<br />
<br />
<b>Часть 2. Для успеха нам требуется записать такой же AppID в само приложение.</b><br />
<br />
В этом нам поможет API функция <i>SetCurrentProcessExplicitAppUserModelID</i>.<br />
Подробнее в MSDN: <a rel="nofollow noopener noreferrer" href="https://msdn.microsoft.com/en-us/library/windows/desktop/dd378422%28v=vs.85%29.aspx" target="_blank" title="https://msdn.microsoft.com/en-us/library/windows/desktop/dd378422%28v=vs.85%29.aspx">https://msdn.microsoft.com/en-us/library/windows/desktop/dd378422(v=vs.85).aspx</a><br />
<br />
Она принимает указатель на строку с AppUserModelID.<br />
<br />
Эту функцию следует разместить перед прорисовкой формы приложения, т.е. в идеале – на этапе  инициализации. Таким образом, мы явно назначаем AppID (он будет называться <b><i>explicit</i></b><i> AppUserModelID</i>).<br />
<br />
Если этого не сделать, ОС сама назначит приложению AppID, рассчитанный на основе специфических алгоритмов, на что будет потрачено некоторое время. Такой AppID будет называться неявным (<b><i>implicit </i></b><i>AppUserModelID</i>).<br />
<br />
<br />
<b>Тест возможностей</b><br />
<br />
Для демонстрации, я возьму 2 независимые программы, написанные на VB6:<br />
<br />
–  HiJackThis by Trend Micro<br />
–  ClearLNK by Alex Dragokas<br />
<br />
Мне будет проще показать это на видео:<br />
<iframe width="640" height="360" src="https://www.youtube.com/embed/Ec9vNetVRRA" frameborder="0" allowfullscreen></iframe><br />
<br />
<br />
<b>Как узнать AppID ?</b><br />
<br />
Нет документированного способа узнать AppID чужого приложения, разве что внедриться в него и вызвать функцию GetCurrentProcessExplicitAppUserModelID (при этом AppID, заданный неявно (implicit), она все равно не покажет).<br />
<br />
Однако, ОС умеет это делать иным способом. И если покопаться глубже, то вполне возможно, что Вам повезет :)<br />
<br />
Я же только расскажу, где его можно посмотреть:<br />
<br />
1)  Нажимаем комбинацию клавиш <b>Win + R</b>, вводим: <b>shell:AppsFolder</b><br />
2)  Откроется окно с установленными программами и компонентами.<br />
3)  В правом углу выберите режим преставления – <b>табличный</b>.<br />
Нажмите <b>левый ALT</b>, появится меню, выберите <b>View</b> -&gt; <b>Choose Details…</b>, поставьте <b>галочку</b> на пункте <b>«AppUserModelID»</b>, <b>ОК</b>.<br />
<br />
Результат:<br />
<br />
<img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=3170&amp;d=1430772066" border="0" alt="Table_AppID.png" style="margin: 5px" /><br />
…<br />
<br />
Кстати, запустить любое приложение из этого меню, используя его AppID, можно таким образом:<br />
<div class="codeblock"><table class="unknown"><thead><tr><td colspan="2" id="588808984"  class="head">Code</td></tr></thead><tbody><tr class="li1"><td><div id="588808984" style="height: 46px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
</pre></td><td class="de1"><pre class="de1">explorer.exe shell:AppsFolder\Microsoft.Windows.Spartan_cw5n1h2txyewy!Microsoft.Spartan.Spartan</pre></td></tr></table></div></td></tr></tbody></table></div>Уточню, что этим способом можно запустить только установленное приложение или компонент системы.<br />
<br />
<br />
<b>Зачем еще используется AppID ?</b><br />
<br />
<b>1) Jump List.</b><br />
<br />
Зная AppID, Вы можете получить доступ к списку переходов (Jump list), например, для перечисления списка недавно открытых файлов в какой-нибудь программе.<br />
<br />
Подробнее о Jump list в видео на MSDN: <a rel="nofollow noopener noreferrer" href="http://windows.microsoft.com/en-us/windows7/using-jump-lists-to-open-programs-and-items" target="_blank" title="http://windows.microsoft.com/en-us/windows7/using-jump-lists-to-open-programs-and-items">http://windows.microsoft.com/e... -and-items</a><br />
<br />
<br />
<b>2) Запуск приложения без указания полного пути.</b><br />
<br />
Microsoft в новых ОС использует AppID, чтобы идентифицировать приложение.<br />
Например, если Вы посмотрите на листинг структуры ярлыка Spartan, выложенный ранее, то не увидите прямых путей (разве что путь к каталогу).<br />
<br />
AppID связан с Application Class примерно так:<br />

			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">Кликните здесь для просмотра всего текста</div>
				   <div class="spoiler-body">
					   <br />
Windows Registry Editor Version 5.00<br />
<br />
[HKEY_CLASSES_ROOT\<b>AppX6k1pws1pa7jjhchyzw9jce3e6hg6vn8d</b>]<br />
<br />
[HKEY_CLASSES_ROOT\AppX6k1pws1pa7jjhchyzw 9jce3e6hg6vn8d\Application]<br />
&quot;ApplicationName&quot;=&quot;@{Microsoft.Windows.S partan_0.11.10074.0_neutral_neutral_cw5n 1h2txyewy?ms-resource://Microsoft.Windows.Spartan/Resources/AppName}&quot;<br />
&quot;ApplicationCompany&quot;=&quot;Microsoft Corporation&quot;<br />
&quot;ApplicationIcon&quot;=&quot;@{Microsoft.Windows.S partan_0.11.10074.0_neutral_neutral_cw5n 1h2txyewy?ms-resource://Microsoft.Windows.Spartan/Files/Assets/SmallLogo.png}&quot;<br />
&quot;ApplicationDescription&quot;=&quot;ms-resource:AppDescription&quot;<br />
<b>&quot;AppUserModelID&quot;=&quot;Microsoft.Windows.Spar tan_cw5n1h2txyewy!Microsoft.Spartan.Spar tan&quot;</b><br />
<br />
[HKEY_CLASSES_ROOT\AppX6k1pws1pa7jjhchyzw 9jce3e6hg6vn8d\DefaultIcon]<br />
@=&quot;@{Microsoft.Windows.Spartan_0.11.1007 4.0_neutral_neutral_cw5n1h2txyewy?ms-resource://Microsoft.Windows.Spartan/Files/Assets/SmallLogo.png}&quot;<br />
<br />
[HKEY_CLASSES_ROOT\AppX6k1pws1pa7jjhchyzw 9jce3e6hg6vn8d\Shell]<br />
@=&quot;open&quot;<br />
<br />
[HKEY_CLASSES_ROOT\AppX6k1pws1pa7jjhchyzw 9jce3e6hg6vn8d\Shell\Open]<br />
&quot;ActivatableClassId&quot;=&quot;Microsoft.Spartan. Spartan.AppXg7kxxh26qff97eq30vmjc45gmf27 9j0y.mca&quot;<br />
&quot;ContractId&quot;=&quot;Windows.File&quot;<br />
&quot;PackageId&quot;=&quot;Microsoft.Windows.Spartan_0 .11.10074.0_neutral_neutral_cw5n1h2txyew y&quot;<br />
&quot;DesiredInitialViewState&quot;=dword:0000 0000<br />
<br />
[HKEY_CLASSES_ROOT\AppX6k1pws1pa7jjhchyzw 9jce3e6hg6vn8d\Shell\Open\command]<br />
&quot;DelegateExecute&quot;=&quot;{4ED3A719-CEA8-4BD9-910D-E252F997AFC2}&quot;<br />

				   </div>
			   </div><br />
<br />
Соответственно, в Windows 10 (как в 8/8.1 не проверял), некоторым ассоциациям файлов также назначены Application Class вместо полного пути к приложению.<br />
<br />
<b>3)  Особая защита</b><br />
<br />
На примере Project Spartan: нельзя просто взять и запустить браузер, открыв файл:<br />
C:\Windows\SystemApps\Spartan_cw5n1h2txy ewy\spartan_edge.exe<br />
<br />
Просто, ничего не произойдет. Хотя открытие ярлыка, связанного с AppID, запускает именно процесс spartan_edge.exe.<br />
<br />
P.S. Если Вы знаете, как преобразовать Application Class (тот, который <b>AppX6k1pws1pa7jjhchyzw9jce3e6hg6vn8d</b>) в полный путь к приложению, я буду Вам очень благодарен за комментарий.<br />
<br />
Спасибо за внимание !!!<br />
<br />
Подготовил: Польшин Стас.<br />
<br />
Использованы материалы:<br />
<a rel="nofollow noopener noreferrer" href="http://gurupackager.blogspot.com/2013/12/disappearing-shortcuts-in-windows-8.html" target="_blank" title="http://gurupackager.blogspot.com/2013/12/disappearing-shortcuts-in-windows-8.html">Aaron Tan. AppUserModelID &amp; Disappearing Shortcuts in Windows 8</a><br />
<a rel="nofollow noopener noreferrer" href="http://winaero.com/blog/exclusive-how-to-start-a-modern-app-from-desktop-without-going-to-the-metro-start-screen/" target="_blank" title="http://winaero.com/blog/exclusive-how-to-start-a-modern-app-from-desktop-without-going-to-the-metro-start-screen/">Gaurav Kale. Exclusive: How to start a Modern app from desktop without going to the Metro Start Screen</a><br />
<a rel="nofollow noopener noreferrer" href="https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx" target="_blank" title="https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx">MSDN - Application User Model IDs </a><br />
<a rel="nofollow noopener noreferrer" href="https://msdn.microsoft.com/en-us/library/windows/desktop/dd391569(v=vs.85).aspx" target="_blank" title="https://msdn.microsoft.com/en-us/library/windows/desktop/dd391569(v=vs.85).aspx">MSDN - System.AppUserModel.ID property</a><br />
<a rel="nofollow noopener noreferrer" href="https://msdn.microsoft.com/en-us/library/windows/desktop/dd378422(v=vs.85).aspx" target="_blank" title="https://msdn.microsoft.com/en-us/library/windows/desktop/dd378422(v=vs.85).aspx">MSDN - SetCurrentProcessExplicitAppUserModelID function</a><br />
<a rel="nofollow noopener noreferrer" href="https://msdn.microsoft.com/en-us/library/windows/desktop/dd378419(v=vs.85).aspx" target="_blank" title="https://msdn.microsoft.com/en-us/library/windows/desktop/dd378419(v=vs.85).aspx">MSDN - GetCurrentProcessExplicitAppUserModelID function</a><br />
<a rel="nofollow noopener noreferrer" href="https://code.google.com/p/win7appid/" target="_blank" title="https://code.google.com/p/win7appid/">win7appid by David Roe</a></div>

]]></content:encoded>
			<dc:creator>Dragokas</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/218284/3519.html</guid>
		</item>
		<item>
			<title>Компиляция проекта Visual Basic 6 с указанием версии или автоинкрементом + UPX + Backup + Manifect + иконка</title>
			<link>https://www.cyberforum.ru/blogs/218284/2854.html</link>
			<pubDate>Tue, 21 Oct 2014 12:41:09 GMT</pubDate>
			<description>*Компиляция проекта VB6 с указанием версии или автоинкрементом (опционально)* 
ver. 1.1 
 
_Как...</description>
			<content:encoded><![CDATA[<div><b><font color="Blue">Компиляция проекта VB6 с указанием версии или автоинкрементом (опционально)</font></b><br />
ver. 1.1<br />
<br />
<u>Как использовать:</u><br />
 - распаковать архив в папку Вашего проекта<br />
 - запустить _Make+Ver+Backup+Manifest+Ico+UPX.cmd<br />
<br />
<u>Где настраивать:</u><br />
Все настройки хранятся в .CMD файле. Правый клик -&gt; изменить.<br />
<br />
<u>Что умеет:</u><br />
1) указание версии программы при компиляции (видно в свойствах файла):<br />
На Ваш выбор:<br />
 - жмем ENTER - это автоинкремент (в настройках можно задать +1 к чему Major, Minor или Revision)<br />
По-умолчанию <b>set IncField=Revision</b><br />
 - жмем прочерк и ENTER - оставить номер старой версии.<br />
 - или указываем конкретную версию, какую хотим.<br />
<br />
2) Добавление манифеста<br />
Укажите в настройках файл с манифестом:<br />
<b>set Manifest=Tools\ManifestByTheTrick\manife st_asInvoker.txt</b><br />
:: Допустимые значения:<br />
:: Tools\ManifestByTheTrick\manifest_asInvo ker.txt<br />
:: Tools\ManifestByTheTrick\manifest_highes tAvailable.txt<br />
:: Tools\ManifestByTheTrick\manifest_requir eAdministrator.txt<br />
:: Tools\ManifestByTheTrick\manifest_asInvo ker_with_Common-Controls.txt<br />
:: Tools\ManifestByTheTrick\manifest_highes tAvailable_with_Common-Controls.txt<br />
:: Tools\ManifestByTheTrick\manifest_requir eAdministrator_with_Common-Controls.txt<br />
Знающие разберутся.<br />
<br />
3) Упаковка в UPX с максимальным стандартным сжатием.<br />
Отключается опцией:<br />
<b>set NoUPX=true</b><br />
<br />
4) Создание бекапа скомпилированной версии.<br />
Путь к папке архива задается в:<br />
<b>set ArcFolder=Archive</b><br />
<br />
5) Смена иконки (наиболее актуально для приложения без формы, где нельзя указать ее в проекте).<br />
<b>set icoFile=Icons\my.ico</b><br />
<br />
<u>Особенности:</u><br />
Имя файла программы можно задать в:<br />
<b>set AppName=myApp.exe</b><br />
<br />
Файл проекта находится автоматически.<br />
Файлы для бекапа собираются из зависимостей в файле .VBP + те, что Вы указали в настройке:<br />
<b>set arcList=*.vbp *.vbw *.res *.exe *.frx *.lvw *.cmd *.csi *.csv &quot;Здесь можно еще указать имя папки, которую тоже нужно включить в архив&quot;</b><br />
<br />
Если проект не был закрыт до начала компиляции, будет отправлен безопасный сигнал о его закрытии.<br />
Если проект содержит ошибки, будет предложено вернуть старый номер версии в файл VBP по нажатию ENTER<br />
-&gt; + откроется сам проект.<br />
<br />
<u>Требования:</u><br />
Установленная среда VB6.<br />
<br />
<u>Предистория:</u><br />
Не нравится мне встроенный в VB6 IDE автоинкремент.<br />
Ну вот хочу я в следующей версии изменить уже не Revision, а Major или Minor.<br />
Лезть для этого в опции далеко и лень. Каждый раз править в файле .VBP аналогично.<br />
<br />
Решение - положить файлик _Make+Ver+Backup+Manifest+Ico+UPX.cmd в папку проекта и запустить.<br />
<br />
<u>Примечание:</u><br />
Чтобы вывести в окно формы версию программы, воспользуйтесь свойствами объекта App:<br />
<br />
<div class="codeblock"><table class="vb"><thead><tr><td colspan="2" id="340596076"  class="head">Visual Basic</td></tr></thead><tbody><tr class="li1"><td><div id="340596076" style="height: 46px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
</pre></td><td class="de1"><pre class="de1">AppVer = App.Major &amp; <span class="st0">&quot;.&quot;</span> &amp; App.Minor &amp; <span class="st0">&quot;.0.&quot;</span> &amp; App.Revision</pre></td></tr></table></div></td></tr></tbody></table></div><u>Авторские права:</u><br />
В составе скрипта используются программы других разработчиков:<br />
:: Icon Changer by anny05<br />
:: Manifest by The Trick (модифицирован Dragokas)<br />
:: UPX by Markus Oberhumer, Laszlo Molnar &amp; John Reiser<br />
:: 7Zip by Igor Pavlov<br />
<br />
Вложение: <a rel="nofollow noopener noreferrer" href="http://dragokas.com/tools/_Make+Ver+Backup+Manifest+Ico+UPX.zip" target="_blank" title="http://dragokas.com/tools/_Make+Ver+Backup+Manifest+Ico+UPX.zip">http://dragokas.com/tools/_Mak... co+UPX.zip</a></div>

]]></content:encoded>
			<dc:creator>Dragokas</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/218284/2854.html</guid>
		</item>
		<item>
			<title>Удаление файлов/папок с зарезервированными именами</title>
			<link>https://www.cyberforum.ru/blogs/218284/731.html</link>
			<pubDate>Sat, 15 Sep 2012 19:43:39 GMT</pubDate>
			<description>\\?\ 
\\.\Отключает на время выполнения команды API-функции, накладывающие следующие запреты: 
 
*...</description>
			<content:encoded><![CDATA[<div><div class="codeblock"><table class="bash"><thead><tr><td colspan="2" id="431769820"  class="head">Bash</td></tr></thead><tbody><tr class="li1"><td><div id="431769820" style="height: 62px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
</pre></td><td class="de1"><pre class="de1">\\?\
\\.\</pre></td></tr></table></div></td></tr></tbody></table></div>Отключает на время выполнения команды API-функции, накладывающие следующие запреты:<br />
<br />
<i><b> - операции с файлами/папками с зарезервированными именами.<br />
 - обращение к разделу напрямую через точку монтирования.</b></i><br />
<br />
А также:<br />
<div class="codeblock"><table class="bash"><thead><tr><td colspan="2" id="966677880"  class="head">Bash</td></tr></thead><tbody><tr class="li1"><td><div id="966677880" style="height: 46px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
</pre></td><td class="de1"><pre class="de1">\\?\</pre></td></tr></table></div></td></tr></tbody></table></div><i><b> - для обхода ограничения на максимальную общую длину каталога  <a href="https://www.cyberforum.ru/windows/thread624094.html">в 256 символов.</a><br />
- отключает парсинг большинства спецсимволов.</b></i><br />
<br />

<table width="95%"  class="bbcode_maincontainer"><tr><td>
	<div class="bbcode_container">
	  <div class="bbcode_quote">
	    <div class="btbtbt">
		<div class="quote_container">
	      	<div class="bbcode_quote_container"></div>
	       	<div class="bbcode_postedby">
	         	
	        </div>
	        <div class="message">For file I/O, the &quot;\\?\&quot; prefix to a path string tells the Windows APIs to disable all string parsing and to send the string that follows it straight to the file system. For example, if the file system supports large paths and file names, you can exceed the MAX_PATH limits that are otherwise enforced by the Windows APIs.<br />
 …<br />
 Because it turns off automatic expansion of the path string, the &quot;\\?\&quot; prefix also allows the use of &quot;..&quot; and &quot;.&quot; in the path names, which can be useful if you are attempting to perform operations on a file with these otherwise reserved relative path specifiers as part of the fully qualified path.</div>
	      </div>
			</div> 
		</div>
	</div>
</td></tr></table><div class="codeblock"><table class="bash"><thead><tr><td colspan="2" id="340837474"  class="head">Bash</td></tr></thead><tbody><tr class="li1"><td><div id="340837474" style="height: 46px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
</pre></td><td class="de1"><pre class="de1">\\.\</pre></td></tr></table></div></td></tr></tbody></table></div><i><b> - для обращения к устройствам напрямую в обход файловой системы.</b></i><br />
<br />

<table width="95%"  class="bbcode_maincontainer"><tr><td>
	<div class="bbcode_container">
	  <div class="bbcode_quote">
	    <div class="btbtbt">
		<div class="quote_container">
	      	<div class="bbcode_quote_container"></div>
	       	<div class="bbcode_postedby">
	         	
	        </div>
	        <div class="message">The &quot;\\.\&quot; prefix will access the Win32 device namespace instead of the Win32 file namespace. This is how access to physical disks and volumes is accomplished directly, without going through the file system, if the API supports this type of access. You can access many devices other than disks this way (using the CreateFile and DefineDosDevice functions, for example).<br />
 …<br />
 Another example of using the Win32 device namespace is using the CreateFile function with &quot;\\.\PhysicalDiskX&quot; (where X is a valid integer value) or &quot;\\.\CdRomX&quot;. This allows you to access those devices directly, bypassing the file system. This works because these device names are created by the system as these devices are enumerated, and some drivers will also create other aliases in the system. For example, the device driver that implements the name &quot;C:\&quot; has its own namespace that also happens to be the file system.</div>
	      </div>
			</div> 
		</div>
	</div>
</td></tr></table><font color="Magenta"><b><u>Примеры практического использования:</u></b></font><br />
<br />
<b>1) Обращение к разделу напрямую через точку монтирования:</b><br />
<div class="codeblock"><table class="bash"><thead><tr><td colspan="2" id="71767964"  class="head">Bash</td></tr></thead><tbody><tr class="li1"><td><div id="71767964" style="height: 62px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
</pre></td><td class="de1"><pre class="de1"><span class="kw3">type</span> \\?\Volume<span class="br0">&#123;</span>98fc8064-566a-11d9-82a2-806d6172696f<span class="br0">&#125;</span>\out.txt
<span class="kw3">type</span> \\.\Volume<span class="br0">&#123;</span>98fc8064-566a-11d9-82a2-806d6172696f<span class="br0">&#125;</span>\out.txt</pre></td></tr></table></div></td></tr></tbody></table></div>К примеру, если разделу не назначено имя диска.<br />
Список таких точек можно получить штатной утилитой <b>MOUNTVOL.exe</b> без параметров.<br />
Примеры также можете почитать в статьях Криса Касперского - <a rel="nofollow noopener noreferrer" href="http://www.xakep.ru/magazine/xa/111/030/1.asp" target="_blank" title="http://www.xakep.ru/magazine/xa/111/030/1.asp">один,</a> <a rel="nofollow noopener noreferrer" href="http://www.insidepro.com/kk/319/319r.shtml" target="_blank" title="http://www.insidepro.com/kk/319/319r.shtml">два.</a><br />
И в этой теме: <a href="https://www.cyberforum.ru/visual-basic/thread605974.html">https://www.cyberforum.ru/visu... 05974.html</a><br />
<br />
2) <b>Создание виртуального жесткого диска VHD и подключение его как пустой папки через точку монтирования.</b><br />
<br />
<div class="codeblock"><table class="bash"><thead><tr><td colspan="2" id="913022742"  class="head">Bash</td></tr></thead><tbody><tr class="li1"><td><div id="913022742" style="height: 350px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
</pre></td><td class="de1"><pre class="de1"><span class="sy0">@</span><span class="kw3">echo</span> off
SetLocal EnableExtensions
call :Invoke_UAC <span class="sy0">%*</span>
&nbsp;
<span class="kw1">set</span> <span class="re2">vdisk</span>=c:\vdisk.vhd
&nbsp;
mountvol <span class="sy0">/</span>E
For <span class="sy0">/</span>F <span class="st0">&quot;delims=&quot;</span> <span class="sy0">%%</span>? <span class="kw1">in</span> <span class="br0">&#40;</span><span class="st_h">'mountvol ^| find &quot;\\?\&quot;'</span><span class="br0">&#41;</span> <span class="kw1">do</span> <span class="kw1">set</span> Array.<span class="sy0">%%</span>?=<span class="kw2">true</span>
<span class="br0">&#40;</span>
&nbsp; <span class="kw3">echo</span> create vdisk <span class="re2">file</span>=<span class="st0">&quot;%vdisk%&quot;</span> <span class="re2">maximum</span>=<span class="nu0">512</span> <span class="re2">type</span>=fixed
&nbsp; <span class="kw3">echo</span> <span class="kw1">select</span> vdisk <span class="re2">file</span>=<span class="st0">&quot;%vdisk%&quot;</span>
&nbsp; <span class="kw3">echo</span> attach vdisk
&nbsp; <span class="kw3">echo</span> convert mbr
&nbsp; <span class="kw3">echo</span> create partition primary
&nbsp; <span class="kw3">echo</span> format <span class="re2">fs</span>=NTFS <span class="re2">label</span>=<span class="st0">&quot;VDisk&quot;</span> quick
<span class="br0">&#41;</span> <span class="sy0">|</span> diskpart
For <span class="sy0">/</span>F <span class="st0">&quot;delims=&quot;</span> <span class="sy0">%%</span>? <span class="kw1">in</span> <span class="br0">&#40;</span><span class="st_h">'mountvol ^| find &quot;\\?\&quot;'</span><span class="br0">&#41;</span> <span class="kw1">do</span> <span class="kw1">if</span> not defined Array.<span class="sy0">%%</span>? <span class="kw1">set</span> <span class="re2">MountPoint</span>=<span class="sy0">%%</span>?
mklink <span class="sy0">/</span>d c:\VDisk\ <span class="sy0">%</span>MountPoint<span class="sy0">%</span>
pause
Exit
&nbsp;
:Invoke_UAC :: Затребование диалога UAC повышения прав
&nbsp; ver <span class="sy0">|&gt;</span>nul <span class="kw2">find</span> <span class="st0">&quot;6.&quot;</span> <span class="sy0">&amp;&amp;</span> <span class="kw1">if</span> <span class="st0">&quot;%1&quot;</span>==<span class="st0">&quot;&quot;</span> <span class="br0">&#40;</span>
&nbsp; &nbsp; Echo new ActiveXObject^<span class="br0">&#40;</span><span class="st_h">'Shell.Application'</span>^<span class="br0">&#41;</span>.ShellExecute ^<span class="br0">&#40;</span>WScript.Arguments^<span class="br0">&#40;</span><span class="nu0">0</span>^<span class="br0">&#41;</span>,<span class="st_h">'UAC'</span>,<span class="st_h">''</span>,<span class="st_h">'runas'</span>,<span class="nu0">1</span>^<span class="br0">&#41;</span>;<span class="sy0">&gt;</span><span class="st0">&quot;%~dp0Invoke_UAC.js&quot;</span>
&nbsp; &nbsp; cscript.exe <span class="sy0">//</span>nologo <span class="sy0">//</span>e:jscript <span class="st0">&quot;%~dp0Invoke_UAC.js&quot;</span> <span class="st0">&quot;%~f0&quot;</span><span class="sy0">&amp;</span> Exit
&nbsp; <span class="br0">&#41;</span> <span class="kw1">else</span> <span class="br0">&#40;</span><span class="sy0">&gt;</span>nul del <span class="st0">&quot;%~dp0Invoke_UAC.js&quot;</span><span class="sy0">&amp;</span> chdir <span class="sy0">/</span>d <span class="st0">&quot;%~dp0&quot;</span><span class="br0">&#41;</span>
Exit <span class="sy0">/</span>B</pre></td></tr></table></div></td></tr></tbody></table></div>Обсуждается в теме: <a href="https://www.cyberforum.ru/cmd-bat/thread941976.html">https://www.cyberforum.ru/cmd-... 41976.html</a><br />
<br />
<b>3) Удаление рекурсивно всех папок (в т.ч. с некорректными именами, например концевым пробелом, точками, названиями системных устройств).</b><br />
Каждое удаление сопровождается обязательным подтверждением действия от пользователя.<br />
Бат-файл поместить в папку, в которой нужно удалить все каталоги. Из нее и запускать.<br />
<br />
<div class="codeblock"><table class="bash"><thead><tr><td colspan="2" id="696735019"  class="head">Bash</td></tr></thead><tbody><tr class="li1"><td><div id="696735019" style="height: 158px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
</pre></td><td class="de1"><pre class="de1"><span class="sy0">@</span><span class="kw3">echo</span> off
chcp <span class="nu0">1251</span>
<span class="kw1">for</span> <span class="sy0">/</span>f <span class="st0">&quot;delims=&quot;</span> <span class="sy0">%%</span>i <span class="kw1">in</span> <span class="br0">&#40;</span><span class="st_h">'dir /b /a:d'</span><span class="br0">&#41;</span> <span class="kw1">do</span> <span class="br0">&#40;</span>
&nbsp; chcp <span class="nu0">866</span>
&nbsp; <span class="kw2">rmdir</span> <span class="sy0">/</span>s <span class="st0">&quot;\\.\%%i<span class="es1">\&quot;</span></span>
<span class="st0"> &nbsp;chcp 1251</span>
<span class="st0">)</span>
<span class="st0">pause&gt;nul</span></pre></td></tr></table></div></td></tr></tbody></table></div><font color="Blue"><b>Другие ссылки по теме:</b></font><br />
<br />
<a rel="nofollow noopener noreferrer" href="http://en.wikipedia.org/wiki/Path_(computing)#MS-DOS.2FMicrosoft_Windows_style" target="_blank" title="http://en.wikipedia.org/wiki/Path_(computing)#MS-DOS.2FMicrosoft_Windows_style">Path (computing) - Wikipedia</a><br />
<a rel="nofollow noopener noreferrer" href="http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx" target="_blank" title="http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx">MSDN - Naming Files, Paths, and Namespaces</a><br />
<a rel="nofollow noopener noreferrer" href="http://msdn.microsoft.com/en-us/library/aa365248(v=VS.85).aspx" target="_blank" title="http://msdn.microsoft.com/en-us/library/aa365248(v=VS.85).aspx">MSDN - Naming a Volume</a><br />
<br />
wiki.drweb.com/index.php/Каталог_E2E2~1<br />
<a rel="nofollow noopener noreferrer" href="http://support.microsoft.com/kb/320081/ru" target="_blank" title="http://support.microsoft.com/kb/320081/ru">MSKB - Невозможно удалить файл или папку в томе с файловой системой NTFS</a><br />
<a rel="nofollow noopener noreferrer" href="http://support.microsoft.com/kb/315226" target="_blank" title="http://support.microsoft.com/kb/315226">MSKB - Удаление файлов с зарезервированными именами в Windows XP</a></div>

]]></content:encoded>
			<dc:creator>Dragokas</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/218284/731.html</guid>
		</item>
		<item>
			<title>Регистрация ActiveX-DLL без прав администратора (UAC включен)</title>
			<link>https://www.cyberforum.ru/blogs/218284/713.html</link>
			<pubDate>Sun, 09 Sep 2012 22:45:18 GMT</pubDate>
			<description>Итак, с целью спрятать пароль подключения к базе данных (поверхностное шифрование) у меня дошли...</description>
			<content:encoded><![CDATA[<div>Итак, с целью спрятать пароль подключения к базе данных (поверхностное шифрование) у меня дошли руки к созданию Active-X библиотеки.<br />
<br />
Благодаря замечательной статье <a rel="nofollow noopener noreferrer" href="http://catstail.narod.ru/" target="_blank" title="http://catstail.narod.ru/">COM в действии</a> <b>Catstail</b>-a все удалось с первого раза.<br />
<br />
За исключением проблем при регистрации DLL через Regsvr32, которой обычных прав оказалось недостаточно,<br />
ведь она записывает значения в реестр в ветку HKLM.<br />
А как известно, без регистрации подключить библиотеку к проекту ни поздним, ни ранним связыванием не получится.<br />
<br />
Выходов из ситуации было 2:<br />
1) Делать установщик, которому прописывать манифест повышенных прав (иконка со щитом), либо повторный запуск процесса от имени другого пользователя через runas. В любом случае буду получать предупреждения системы защиты.<br />
2) Прописать вручную ветки реестра для текущего пользователя (HKCU), т.к. утилита Regsvr32 такой роскоши нам не дает.<br />
<br />
Вторым способом я и занялся.<br />
<br />
<b>Шаг 1. Регистрация DLL с правами администратора</b>, например через (.cmd) Batch-файл, или через запуск консоли CMD в строке поиска Ctrl+Shift+Enter.<br />
<div class="codeblock"><table class="bash"><thead><tr><td colspan="2" id="970700720"  class="head">Bash</td></tr></thead><tbody><tr class="li1"><td><div id="970700720" style="height: 62px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
</pre></td><td class="de1"><pre class="de1">Regsvr32.exe C:\Alex\Desktop\ActXTest\Calc.dll
::Ключ <span class="sy0">/</span>s - Тихий режим</pre></td></tr></table></div></td></tr></tbody></table></div><b>Шаг 2. Получение ключей реестра.</b><br />
Вторая часть статьи <b>Catstail</b>-а описывает, кроме всего прочего особенности хранения ключей в реестре при регистрации DLL, а также в приложении программу, которая находит в реестре GUID, CLSID, Inerface и TypeLib-ы созданного класса.<br />
Но все же я решил вручную просканировать изменения в реестре (для этого воспользовался бесплатной программой <a rel="nofollow noopener noreferrer" href="http://sourceforge.net/projects/regshot/" target="_blank" title="http://sourceforge.net/projects/regshot/">RegShot</a>).<br />

			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">Получен список новых ключей:</div>
				   <div class="spoiler-body">
					   Windows Registry Editor Version 5.00<br />
<br />
<b>&#91;HKEY_LOCAL_MACHINE\SOFTWARE\Classes</b>\Calc.myCalc]<br />
@=&quot;Calc.myCalc&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes</b>\Calc.myCalc\Clsid]<br />
@=&quot;{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="Magenta">Wow6432Node\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}]<br />
@=&quot;Calc.myCalc&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="magenta">Wow6432Node\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\Implemented Categories]<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="magenta">Wow6432Node\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\Implemented Categories\{40FC6ED5-2438-11CF-A3DB-080036F12502}]<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="magenta">Wow6432Node\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\InprocServer32]<br />
@=&quot;C:\\Users\\Alex\\Desktop\\ActXTest\\C alc.dll&quot;<br />
&quot;ThreadingModel&quot;=&quot;Apartment&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="magenta">Wow6432Node\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\ProgID]<br />
@=&quot;Calc.myCalc&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="magenta">Wow6432Node\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\Programmable]<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="magenta">Wow6432Node\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\TypeLib]<br />
@=&quot;{4D922142-997D-4403-A002-2387BCF4A07F}&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="magenta">Wow6432Node\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\VERSION]<br />
@=&quot;1.0&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\<font color="Blue">Wow6432Node\Classes\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}]<br />
@=&quot;Calc.myCalc&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\<font color="blue">Wow6432Node\Classes\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\Implemented Categories]<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\<font color="blue">Wow6432Node\Classes\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\Implemented Categories\{40FC6ED5-2438-11CF-A3DB-080036F12502}]<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\<font color="blue">Wow6432Node\Classes\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\InprocServer32]<br />
@=&quot;C:\\Users\\Alex\\Desktop\\ActXTest\\C alc.dll&quot;<br />
&quot;ThreadingModel&quot;=&quot;Apartment&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\<font color="blue">Wow6432Node\Classes\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\ProgID]<br />
@=&quot;Calc.myCalc&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\<font color="blue">Wow6432Node\Classes\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\Programmable]<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\<font color="blue">Wow6432Node\Classes\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\TypeLib]<br />
@=&quot;{4D922142-997D-4403-A002-2387BCF4A07F}&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\<font color="blue">Wow6432Node\Classes\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\VERSION]<br />
@=&quot;1.0&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="magenta">Interface</font></b>\{25E88292-036E-479D-B010-82EFB67A1001}]<br />
@=&quot;_myCalc&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="magenta">Interface</font></b>\{25E88292-036E-479D-B010-82EFB67A1001}\ProxyStubClsid32]<br />
@=&quot;{00020424-0000-0000-C000-000000000046}&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="magenta">Interface</font></b>\{25E88292-036E-479D-B010-82EFB67A1001}\TypeLib]<br />
@=&quot;{4D922142-997D-4403-A002-2387BCF4A07F}&quot;<br />
&quot;Version&quot;=&quot;1.0&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="blue">TypeLib</font></b>\{4D922142-997D-4403-A002-2387BCF4A07F}]<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="blue">TypeLib</font></b>\{4D922142-997D-4403-A002-2387BCF4A07F}\1.0]<br />
@=&quot;Calc&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="blue">TypeLib</font></b>\{4D922142-997D-4403-A002-2387BCF4A07F}\1.0\0]<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="blue">TypeLib</font></b>\{4D922142-997D-4403-A002-2387BCF4A07F}\1.0\0\win32]<br />
@=&quot;C:\\Users\\Alex\\Desktop\\ActXTest\\C alc.dll&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="blue">TypeLib</font></b>\{4D922142-997D-4403-A002-2387BCF4A07F}\1.0\FLAGS]<br />
@=&quot;0&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<font color="blue">TypeLib</font></b>\{4D922142-997D-4403-A002-2387BCF4A07F}\1.0\HELPDIR]<br />
@=&quot;C:\\Users\\Alex\\Desktop\\ActXTest&quot;
				   </div>
			   </div><br />
<br />
Для работы DLL на самом деле используются значения ключей в ветке HKEY_CLASSES_ROOT (HKCR)<br />
Математика такая:<br />
HKCR получается путем сложения ключей, которые находятся в ветках HKLM + HKCU.<br />
Если ветка HKCU содержит другие значения, чем HKLM, то HKCU имеет приоритет.<br />
<br />
<b>Шаг 3. Модификация ключей Reg-файла.</b><br />
Делаем автозамену веток HKEY_LOCAL_MACHINE на HKEY_CURRENT_USER<br />
<br />
И убеждаемся, что у нас все работает:<ul><li>Отменяем регистрацию DLL:<br />
<div class="codeblock"><table class="bash"><thead><tr><td colspan="2" id="679122885"  class="head">Bash</td></tr></thead><tbody><tr class="li1"><td><div id="679122885" style="height: 46px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
</pre></td><td class="de1"><pre class="de1">Regsvr32.exe <span class="sy0">/</span>u C:\Alex\Desktop\ActXTest\Calc.dll</pre></td></tr></table></div></td></tr></tbody></table></div>(требует прав администратора через раз %-)). А иначе выдает ошибку &quot;Не удалось выполнить вызов DllRegisterServer. Код ошибки 0х80004005.&quot;</li>
<li>Запускаем модифицированный Reg-файл</li>
<li>Перезапускаем процесс, откуда тестируем DLL (я использовал Excel VBA), код аналогичен и для VB6:<br />
<div class="codeblock"><table class="vb"><thead><tr><td colspan="2" id="877670061"  class="head">Visual Basic</td></tr></thead><tbody><tr class="li1"><td><div id="877670061" style="height: 350px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td class="de1"><pre class="de1"><span class="co1">'Для раннего связывания -&gt; Tools (VBA) Project (VB) -&gt; Preferences -&gt; Calc (поставить птичку)</span>
<span class="kw2">Sub</span> Command1_Click()
<span class="kw4">On</span> <span class="kw4">Error</span> <span class="kw3">GoTo</span> ErrH
<span class="co1">'Dim C As Calc.myCalc 'раннее связывание</span>
<span class="kw4">Dim</span> C <span class="kw4">As</span> <span class="kw1">Object</span> <span class="co1">'позднее связывание</span>
<span class="kw4">Dim</span> v
&nbsp;
<span class="co1">'Set C = New Calc.myCalc 'раннее связывание</span>
&nbsp;
<span class="kw4">Set</span> C = <span class="kw2">CreateObject</span>(<span class="st0">&quot;calc.mycalc&quot;</span>) <span class="co1">'позднее связывание</span>
&nbsp;
v = C.Calculate(7, 8, <span class="st0">&quot;*&quot;</span>)
&nbsp;
Debug.<span class="kw4">Print</span> v
&nbsp;
<span class="co1">'C.Top = C.Height</span>
<span class="co1">'C.Left = C.Width</span>
&nbsp;
<span class="co1">'C.Show</span>
&nbsp;
<span class="kw4">Set</span> C = <span class="kw5">Nothing</span>
<span class="kw2">Exit</span> <span class="kw2">Sub</span>
&nbsp;
ErrH:
Debug.<span class="kw4">Print</span> Err.Description
<span class="kw3">End</span> <span class="kw2">Sub</span></pre></td></tr></table></div></td></tr></tbody></table></div></li>
</ul>Убеждаемся, что присвоение объекта происходит корректно.<br />
Ошибок чаще всего бывает две:<br />
1) Automation error. Не найден указанный модуль. - Это значит, что библиотека зарегистрирована, но указано неверное расположение файла DLL, либо он был переименован.<br />
2) ActiveX component can't create object - DLL не зарегистрирована, или зарегистрирована некорректно.<br />
<br />
<b>Шаг 4. Избавляемся от лишних ссылок на 32-битные ветки реестра в Reg-файле</b><br />
<br />
Как можно заметить из содержимого Reg-файла, система у меня х64-битная. И это Windows 7 с максимальным уровнем защиты UAC.<br />
<br />
Итак, сервер регистрации прописал DLL в реестре на все случаи.<br />
Но зачем?<br />
Не секрет, что в 64-х системах существует механизм переадресации запросов 32-битных приложений в ветку <b>Wow6432Node</b>. Процесс чем-то схожий с файловыми переадресациями, о которых я не так давно писал <a href="https://www.cyberforum.ru/visual-basic/thread636329.html">в этой теме</a>.<br />
По этому вопросу есть <a rel="nofollow noopener noreferrer" href="http://www.codeproject.com/Articles/14200/Registry-Redirector-in-x64-IA64" target="_blank" title="http://www.codeproject.com/Articles/14200/Registry-Redirector-in-x64-IA64">неплохая статья</a> от Jochen Kalmbach.<br />
<br />
Итак, удаляем дублирующие ветки реестра из Reg-файла, а в остальных удаляем часть &quot;Wow6432Node\&quot;:<br />

			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">Эти ветки нам не нужны:</div>
				   <div class="spoiler-body">
					   <br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\<font color="Blue">Wow6432Node\Classes\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}]<br />
@=&quot;Calc.myCalc&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\<font color="blue">Wow6432Node\Classes\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\Implemented Categories]<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\<font color="blue">Wow6432Node\Classes\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\Implemented Categories\{40FC6ED5-2438-11CF-A3DB-080036F12502}]<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\<font color="blue">Wow6432Node\Classes\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\InprocServer32]<br />
@=&quot;C:\\Users\\Alex\\Desktop\\ActXTest\\C alc.dll&quot;<br />
&quot;ThreadingModel&quot;=&quot;Apartment&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\<font color="blue">Wow6432Node\Classes\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\ProgID]<br />
@=&quot;Calc.myCalc&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\<font color="blue">Wow6432Node\Classes\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\Programmable]<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\<font color="blue">Wow6432Node\Classes\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\TypeLib]<br />
@=&quot;{4D922142-997D-4403-A002-2387BCF4A07F}&quot;<br />
<br />
<b>[HKEY_LOCAL_MACHINE\SOFTWARE\<font color="blue">Wow6432Node\Classes\CLSID</font></b>\{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\VERSION]
				   </div>
			   </div><br />
<br />
Одно но! После такой экзекуции, нам нельзя вручную (двойным кликом) вносить Reg-файл в реестр.<br />
Система примет такой запрос как от имени х64-процесса и переадресация не сработает.<br />
Поэтому нам нужно это делать из любого 32-битного приложения, коим есть VB6, например так:<br />
<div class="codeblock"><table class="vb"><thead><tr><td colspan="2" id="737731903"  class="head">Visual Basic</td></tr></thead><tbody><tr class="li1"><td><div id="737731903" style="height: 46px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
</pre></td><td class="de1"><pre class="de1">Shell <span class="st0">&quot;cmd /c reg.exe import e:\Dll.reg&quot;</span>, vbHide</pre></td></tr></table></div></td></tr></tbody></table></div>Команда выполнялась под учетной записью с ограниченными правами,<br />
а также успешно испытана на свежеустановленной Windows XP x32-bit.<br />
<br />
В приложении: скомпилированная библиотека, Reg-файл, Excel-файл и VB-проект (на выбор) с Shell-ом регистрации и процедурой вызова методов и свойств объекта Calc.dll.<br />
VBS-скрипт у меня не заработал :(, не знаю почему.<br />
<b>Для корректной регистрации</b> 
			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">измените в Reg-файле путь</div>
				   <div class="spoiler-body">
					   Windows Registry Editor Version 5.00<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\Calc. myCalc]<br />
@=&quot;Calc.myCalc&quot;<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\Calc. myCalc\Clsid]<br />
@=&quot;{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}&quot;<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID \{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}]<br />
@=&quot;Calc.myCalc&quot;<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID \{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\Implemented Categories]<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID \{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\Implemented Categories\{40FC6ED5-2438-11CF-A3DB-080036F12502}]<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID \{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\InprocServer32]<br />
@=<b><font color="red">&quot;C:\\Users\\Alex\\Desktop\\ActXTest\\Cal c.dll&quot;</font></b><br />
&quot;ThreadingModel&quot;=&quot;Apartment&quot;<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID \{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\ProgID]<br />
@=&quot;Calc.myCalc&quot;<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID \{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\Programmable]<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID \{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\TypeLib]<br />
@=&quot;{4D922142-997D-4403-A002-2387BCF4A07F}&quot;<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\CLSID \{54319578-F5A1-4BEF-B8A4-20E6F89ABB4A}\VERSION]<br />
@=&quot;1.0&quot;<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\Inter face\{25E88292-036E-479D-B010-82EFB67A1001}]<br />
@=&quot;_myCalc&quot;<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\Inter face\{25E88292-036E-479D-B010-82EFB67A1001}\ProxyStubClsid32]<br />
@=&quot;{00020424-0000-0000-C000-000000000046}&quot;<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\Inter face\{25E88292-036E-479D-B010-82EFB67A1001}\TypeLib]<br />
@=&quot;{4D922142-997D-4403-A002-2387BCF4A07F}&quot;<br />
&quot;Version&quot;=&quot;1.0&quot;<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\TypeL ib\{4D922142-997D-4403-A002-2387BCF4A07F}]<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\TypeL ib\{4D922142-997D-4403-A002-2387BCF4A07F}\1.0]<br />
@=&quot;Calc&quot;<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\TypeL ib\{4D922142-997D-4403-A002-2387BCF4A07F}\1.0\0]<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\TypeL ib\{4D922142-997D-4403-A002-2387BCF4A07F}\1.0\0\win32]<br />
@=<b><font color="Red">&quot;C:\\Users\\Alex\\Desktop\\ActXTest\\Cal c.dll&quot;</font></b><br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\TypeL ib\{4D922142-997D-4403-A002-2387BCF4A07F}\1.0\FLAGS]<br />
@=&quot;0&quot;<br />
<br />
[HKEY_CURRENT_USER\SOFTWARE\Classes\TypeL ib\{4D922142-997D-4403-A002-2387BCF4A07F}\1.0\HELPDIR]<br />
@=<b><font color="red">&quot;C:\\Users\\Alex\\Desktop\\ActXTest&quot;</font></b>
				   </div>
			   </div> &quot;C:\\Users\\Alex\\Desktop\\ActXTest&quot;<br />
на месторасположение файла Calc.dll на Вашем компьютере, на забывая при этом про двойные слеши <b>\\</b>.<br />
<br />
Стоит заметить, что при перекомпиляции DLL в среде VB6 происходит автоматическая регистрация библиотеки. Кроме того, все GUID и др. значения изменяются. Т.о. Reg-файл нужно создавать заново.<br />
<br />
В дальнейшем если версия DLL будет меняться планирую автоматизировать весь этот процесс написанием программы. Благо, исходник сканера уже есть :)<br />
<br />
Может конечно вся статья и зря, и есть более простой способ зарегистрировать Active-X Dll в среде текущего пользователя. С удовольствием выслушаю Ваши варианты и комментарии.</div>


<!-- attachments -->
	<div style="margin-top:10px">

		
		
		
		
			<fieldset class="fieldset">
				<legend>Вложения</legend>
				<table cellpadding="0" cellspacing="3" border="0">
				<tr>
	<td><img loading="lazy" decoding="async" class="inlineimg" src="http://www.cyberforum.ru//cyberstatic.net/images/attach/rar.gif" alt="Тип файла: rar" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
	<td><a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=1299&amp;d=1347230678">ActXTest.rar</a> (43.6 Кб, 690 просмотров)</td>
</tr>
				</table>
			</fieldset>
		

	</div>
<!-- / attachments -->
]]></content:encoded>
			<dc:creator>Dragokas</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/218284/713.html</guid>
		</item>
		<item>
			<title><![CDATA[Стих "Весна"]]></title>
			<link>https://www.cyberforum.ru/blogs/218284/670.html</link>
			<pubDate>Tue, 21 Aug 2012 17:41:58 GMT</pubDate>
			<description><![CDATA[*"Весна"* 
 ====== 
 Пришла весна... Зеленым цветом 
 Вонзила в землю якоря. 
 И ты идешь встречать...]]></description>
			<content:encoded><![CDATA[<div><b><font color="Magenta">&quot;Весна&quot;</font></b><br />
 ======<br />
 Пришла весна... Зеленым цветом<br />
 Вонзила в землю якоря.<br />
 И ты идешь встречать с рассветом<br />
 Босой ногою у ручья,<br />
 Ступая вдоль душистою тропы,<br />
 Впитать в себя дары природы.<br />
<br />
 Блестящие капельки росы<br />
 Спадают с молодой листвы.<br />
 По ним летают воробьи.<br />
 С восходом утренней зари<br />
 Лелеют, нежаться в тени.<br />
 Поют нам песню о любви.<br />
<br />
 И легкий ветер тебя обвивает -<br />
 столь нежный, столь свежий и теплый.<br />
 Почувствовать юной тебя заставляет -<br />
 Веселой, свободной от мыслей, такой беззаботной.<br />
<br />
 Любовь к природе тебя наполняет,<br />
 Когда ты глядишь на гармонию красок, движений и их остроты,<br />
 Когда белая бабочка к тебе подлетает,<br />
 Милуется в светлых лучах она, как и ты.<br />
 _____<br />
 A.D.<br />
 22.04.12</div>

]]></content:encoded>
			<dc:creator>Dragokas</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/218284/670.html</guid>
		</item>
		<item>
			<title>Быстрое отключение всех флешек с обесточиванием (VB, C++, exe+src)</title>
			<link>https://www.cyberforum.ru/blogs/218284/627.html</link>
			<pubDate>Tue, 14 Aug 2012 11:20:15 GMT</pubDate>
			<description>*Последняя версия утилиты доступна в конце темы по ссылке:*...</description>
			<content:encoded><![CDATA[<div><b><font color="Blue">Последняя версия утилиты доступна в конце темы по ссылке:</font></b> <a href="https://www.cyberforum.ru/cmd-bat/thread699180.html">https://www.cyberforum.ru/cmd-... 99180.html</a><br />
<br />
<b><u>Преимущества:</u></b><ul><li>В OS Vista, Windows 7 <b>не только отключает, но и обесточивает</b> Flash Drive.</li>
<li>Показывает имя приложения, которое не дает безопасно отключить уст-во (блокирует его файловую систему).</li>
<li>Ожидает до тех пор, пока блокировка не будет снята, затем самостоятельно повторяет попытку безопасного отключения.</li>
<li><b>Двойной клик - флешка отключена</b> (никаких сообщений, ничего лишнего :))</li>
<li>Возможность отключить отдельное уст-во, если их более 1 (отображает информацию о них).</li>
<li>Имеет исходный код.</li>
</ul>Итак, если устройств подключено несколько, отображается диалоговое окно с информацией о:<br />
1. Метках флешек.<br />
2. Общем объеме.<br />
3. Имени раздела.<br />
Нажатие &quot;Ок&quot; отключает все съемные накопители.<br />
Ввод порядкового номера устройства отключает конкретный драйв. <br />
<br />
Авто-определение букв накопителей, диалоговое окно и вызов консольной утилиты написано на Visual Basic.<br />
<b>Основная часть</b>: freeware-программа RemoveDrive - на С++ (Автор: Uwe Sieber - <a rel="nofollow noopener noreferrer" href="https://www.uwe-sieber.de" target="_blank" title="https://www.uwe-sieber.de">www.uwe-sieber.de</a>)<br />
Ее упрощенный <a rel="nofollow noopener noreferrer" href="http://www.codeproject.com/Articles/13839/How-to-Prepare-a-USB-Drive-for-Safe-Removal" target="_blank" title="http://www.codeproject.com/Articles/13839/How-to-Prepare-a-USB-Drive-for-Safe-Removal">Source-код. </a> 
			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">C++ Demo (щелк^_^)</div>
				   <div class="spoiler-body">
					   <div class="codeblock"><table class="cpp"><thead><tr><td colspan="2" id="62590386"  class="head">C++</td></tr></thead><tbody><tr class="li1"><td><div id="62590386" style="height: 350px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
</pre></td><td class="de1"><pre class="de1"><span class="co1">//</span>
<span class="co1">// RemoveDriveByLetter.cpp by Uwe Sieber - [url]www.uwe-sieber.de[/url]</span>
<span class="co1">//</span>
<span class="co1">// Simple demonstration how to prepare a disk drive for save removal</span>
<span class="co1">//</span>
<span class="co1">// Works with removable and fixed drives under W2K, XP, W2K3, Vista</span>
<span class="co1">//</span>
<span class="co1">// Console application - expects the drive letter of the drive to remove as parameter</span>
<span class="co1">//</span>
<span class="co1">// you are free to use this code in your projects</span>
<span class="co1">//</span>
&nbsp;
&nbsp;
<span class="co2">#include &quot;stdafx.h&quot;</span>
<span class="co2">#include &lt;stdio.h&gt;</span>
&nbsp;
<span class="co2">#include &lt;windows.h&gt;</span>
&nbsp;
<span class="co2">#include &lt;Setupapi.h&gt;</span>
<span class="co2">#include &lt;winioctl.h&gt;</span>
<span class="co2">#include &lt;winioctl.h&gt;</span>
<span class="co2">#include &lt;cfgmgr32.h&gt;</span>
&nbsp;
<span class="co1">//-------------------------------------------------</span>
DEVINST GetDrivesDevInstByDeviceNumber<span class="br0">&#40;</span><span class="kw4">long</span> DeviceNumber, UINT DriveType, <span class="kw4">char</span><span class="sy2">*</span> szDosDeviceName<span class="br0">&#41;</span><span class="sy4">;</span>
<span class="co1">//-------------------------------------------------</span>
&nbsp;
&nbsp;
&nbsp;
<span class="co1">//-------------------------------------------------</span>
<span class="kw4">int</span> main<span class="br0">&#40;</span><span class="kw4">int</span> argc, <span class="kw4">char</span><span class="sy2">*</span> argv<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> argc <span class="sy3">!</span><span class="sy1">=</span> <span class="nu0">2</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">1</span><span class="sy4">;</span> &nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw4">char</span> DriveLetter <span class="sy1">=</span> argv<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy4">;</span>
&nbsp; &nbsp; DriveLetter <span class="sy3">&amp;</span><span class="sy1">=</span> ~<span class="nu12">0x20</span><span class="sy4">;</span> <span class="co1">// uppercase</span>
&nbsp;
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> DriveLetter <span class="sy1">&lt;</span> <span class="st0">'A'</span> <span class="sy3">||</span> DriveLetter <span class="sy1">&gt;</span> <span class="st0">'Z'</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">1</span><span class="sy4">;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp;
&nbsp; &nbsp; <span class="kw4">char</span> szRootPath<span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy1">=</span> <span class="st0">&quot;X:<span class="es1">\&quot;</span>; &nbsp; // &quot;</span>X<span class="sy4">:</span><span class="st0">&quot; &nbsp;-&gt; for GetDriveType</span>
<span class="st0">&nbsp; &nbsp; szRootPath[0] = DriveLetter;</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; char szDevicePath[] = &quot;</span>X<span class="sy4">:</span><span class="st0">&quot;; &nbsp; // &quot;</span>X<span class="sy4">:</span><span class="st0">&quot; &nbsp; -&gt; for QueryDosDevice</span>
<span class="st0">&nbsp; &nbsp; szDevicePath[0] = DriveLetter;</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; char szVolumeAccessPath[] = &quot;</span>\\\\.\\X<span class="sy4">:</span><span class="st0">&quot;; &nbsp; // &quot;</span>\\.\X<span class="sy4">:</span><span class="st0">&quot; &nbsp;-&gt; to open the volume</span>
<span class="st0">&nbsp; &nbsp; szVolumeAccessPath[4] = DriveLetter;</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; long DeviceNumber = -1;</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; // open the storage volume</span>
<span class="st0">&nbsp; &nbsp; HANDLE hVolume = CreateFile(szVolumeAccessPath, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);</span>
<span class="st0">&nbsp; &nbsp; if (hVolume == INVALID_HANDLE_VALUE) {</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; return 1;</span>
<span class="st0">&nbsp; &nbsp; }</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; // get the volume's device number</span>
<span class="st0">&nbsp; &nbsp; STORAGE_DEVICE_NUMBER sdn;</span>
<span class="st0">&nbsp; &nbsp; DWORD dwBytesReturned = 0;</span>
<span class="st0">&nbsp; &nbsp; long res = DeviceIoControl(hVolume, IOCTL_STORAGE_GET_DEVICE_NUMBER, NULL, 0, &amp;sdn, sizeof(sdn), &amp;dwBytesReturned, NULL);</span>
<span class="st0">&nbsp; &nbsp; if ( res ) {</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; DeviceNumber = sdn.DeviceNumber;</span>
<span class="st0">&nbsp; &nbsp; }</span>
<span class="st0">&nbsp; &nbsp; CloseHandle(hVolume);</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; if ( DeviceNumber == -1 ) {</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; return 1;</span>
<span class="st0">&nbsp; &nbsp; }</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; // get the drive type which is required to match the device numbers correctely</span>
<span class="st0">&nbsp; &nbsp; UINT DriveType = GetDriveType(szRootPath);</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; // get the dos device name (like \device<span class="es1">\f</span>loppy0) to decide if it's a floppy or not - who knows a better way?</span>
<span class="st0">&nbsp; &nbsp; char szDosDeviceName[MAX_PATH];</span>
<span class="st0">&nbsp; &nbsp; res = QueryDosDevice(szDevicePath, szDosDeviceName, MAX_PATH);</span>
<span class="st0">&nbsp; &nbsp; if ( !res ) {</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; return 1;</span>
<span class="st0">&nbsp; &nbsp; }</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; // get the device instance handle of the storage volume by means of a SetupDi enum and matching the device number</span>
<span class="st0">&nbsp; &nbsp; DEVINST DevInst = GetDrivesDevInstByDeviceNumber(DeviceNumber, DriveType, szDosDeviceName);</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; if ( DevInst == 0 ) {</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; return 1;</span>
<span class="st0">&nbsp; &nbsp; }</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; PNP_VETO_TYPE VetoType = PNP_VetoTypeUnknown; </span>
<span class="st0">&nbsp; &nbsp; WCHAR VetoNameW[MAX_PATH];</span>
<span class="st0">&nbsp; &nbsp; VetoNameW[0] = 0;</span>
<span class="st0">&nbsp; &nbsp; bool bSuccess = false;</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; // get drives's parent, e.g. the USB bridge, the SATA port, an IDE channel with two drives!</span>
<span class="st0">&nbsp; &nbsp; DEVINST DevInstParent = 0;</span>
<span class="st0">&nbsp; &nbsp; res = CM_Get_Parent(&amp;DevInstParent, DevInst, 0); </span>
&nbsp;
<span class="st0">&nbsp; &nbsp; for ( long tries=1; tries&lt;=3; tries++ ) { // sometimes we need some tries...</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; VetoNameW[0] = 0;</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; // CM_Query_And_Remove_SubTree doesn't work for restricted users</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; //res = CM_Query_And_Remove_SubTreeW(DevInstParent, &amp;VetoType, VetoNameW, MAX_PATH, CM_REMOVE_NO_RESTART); // CM_Query_And_Remove_SubTreeA is not implemented under W2K!</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; //res = CM_Query_And_Remove_SubTreeW(DevInstParent, NULL, NULL, 0, CM_REMOVE_NO_RESTART); &nbsp;// with messagebox (W2K, Vista) or balloon (XP)</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; </span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; res = CM_Request_Device_EjectW(DevInstParent, &amp;VetoType, VetoNameW, MAX_PATH, 0);</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; //res = CM_Request_Device_EjectW(DevInstParent, NULL, NULL, 0, 0); // with messagebox (W2K, Vista) or balloon (XP)</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; bSuccess = (res==CR_SUCCESS &amp;&amp; VetoType==PNP_VetoTypeUnknown);</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; if ( bSuccess ) &nbsp;{ </span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; }</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; Sleep(500); // required to give the next tries a chance!</span>
<span class="st0">&nbsp; &nbsp; }</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; if ( bSuccess ) {</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; printf(&quot;</span>Success\n\n<span class="st0">&quot;);</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; return 0;</span>
<span class="st0">&nbsp; &nbsp; }</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; printf(&quot;</span>failed\n<span class="st0">&quot;);</span>
<span class="st0">&nbsp; &nbsp; </span>
<span class="st0">&nbsp; &nbsp; printf(&quot;</span>Result<span class="sy1">=</span>0x<span class="sy2">%</span>2X\n<span class="st0">&quot;, res);</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; if ( VetoNameW[0] ) {</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; printf(&quot;</span>VetoName<span class="sy1">=</span><span class="sy2">%</span>ws<span class="br0">&#41;</span>\n\n<span class="st0">&quot;, VetoNameW);</span>
<span class="st0">&nbsp; &nbsp; } &nbsp; </span>
<span class="st0">&nbsp; &nbsp; return 1;</span>
<span class="st0">}</span>
<span class="st0">//-----------------------------------------------------------</span>
&nbsp;
&nbsp;
&nbsp;
<span class="st0">//----------------------------------------------------------------------</span>
<span class="st0">// returns the device instance handle of a storage volume or 0 on error</span>
<span class="st0">//----------------------------------------------------------------------</span>
<span class="st0">DEVINST GetDrivesDevInstByDeviceNumber(long DeviceNumber, UINT DriveType, char* szDosDeviceName)</span>
<span class="st0">{</span>
<span class="st0">&nbsp; &nbsp; bool IsFloppy = (strstr(szDosDeviceName, &quot;</span>\\Floppy<span class="st0">&quot;) != NULL); // who knows a better way?</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; GUID* guid;</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; switch (DriveType) {</span>
<span class="st0">&nbsp; &nbsp; case DRIVE_REMOVABLE:</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; if ( IsFloppy ) {</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; guid = (GUID*)&amp;GUID_DEVINTERFACE_FLOPPY;</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; } else {</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; guid = (GUID*)&amp;GUID_DEVINTERFACE_DISK;</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; }</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; break;</span>
<span class="st0">&nbsp; &nbsp; case DRIVE_FIXED:</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; guid = (GUID*)&amp;GUID_DEVINTERFACE_DISK;</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; break;</span>
<span class="st0">&nbsp; &nbsp; case DRIVE_CDROM:</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; guid = (GUID*)&amp;GUID_DEVINTERFACE_CDROM;</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; break;</span>
<span class="st0">&nbsp; &nbsp; default:</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; return 0;</span>
<span class="st0">&nbsp; &nbsp; }</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; // Get device interface info set handle for all devices attached to system</span>
<span class="st0">&nbsp; &nbsp; HDEVINFO hDevInfo = SetupDiGetClassDevs(guid, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; if (hDevInfo == INVALID_HANDLE_VALUE) &nbsp; {</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; return 0;</span>
<span class="st0">&nbsp; &nbsp; }</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; // Retrieve a context structure for a device interface of a device information set</span>
<span class="st0">&nbsp; &nbsp; DWORD dwIndex = 0;</span>
<span class="st0">&nbsp; &nbsp; long res;</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; BYTE Buf[1024];</span>
<span class="st0">&nbsp; &nbsp; PSP_DEVICE_INTERFACE_DETAIL_DATA pspdidd = (PSP_DEVICE_INTERFACE_DETAIL_DATA)Buf;</span>
<span class="st0">&nbsp; &nbsp; SP_DEVICE_INTERFACE_DATA &nbsp; &nbsp; &nbsp; &nbsp; spdid;</span>
<span class="st0">&nbsp; &nbsp; SP_DEVINFO_DATA &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;spdd;</span>
<span class="st0">&nbsp; &nbsp; DWORD &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dwSize;</span>
<span class="st0">&nbsp; &nbsp; </span>
<span class="st0">&nbsp; &nbsp; spdid.cbSize = sizeof(spdid);</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; while ( true )&nbsp; {</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; res = SetupDiEnumDeviceInterfaces(hDevInfo, NULL, guid, dwIndex, &amp;spdid);</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; if ( !res ) {</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; }</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; dwSize = 0;</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; SetupDiGetDeviceInterfaceDetail(hDevInfo, &amp;spdid, NULL, 0, &amp;dwSize, NULL); // check the buffer size</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; if ( dwSize!=0 &amp;&amp; dwSize&lt;=sizeof(Buf) ) {</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pspdidd-&gt;cbSize = sizeof(*pspdidd); // 5 Bytes!</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ZeroMemory(&amp;spdd, sizeof(spdd));</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; spdd.cbSize = sizeof(spdd);</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; long res = SetupDiGetDeviceInterfaceDetail(hDevInfo, &amp;spdid, pspdidd, dwSize, &amp;dwSize, &amp;spdd);</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( res ) {</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // in case you are interested in the USB serial number:</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // the device id string contains the serial number if the device has one,</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // otherwise a generated id that contains the '&amp;' char...</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DEVINST DevInstParent = 0;</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CM_Get_Parent(&amp;DevInstParent, spdd.DevInst, 0); </span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; char szDeviceIdString[MAX_PATH];</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CM_Get_Device_ID(DevInstParent, szDeviceIdString, MAX_PATH, 0);</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; printf(&quot;</span>DeviceId<span class="sy1">=</span><span class="sy2">%</span>s\n<span class="st0">&quot;, szDeviceIdString);</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; */</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // open the disk or cdrom or floppy</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HANDLE hDrive = CreateFile(pspdidd-&gt;DevicePath, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( hDrive != INVALID_HANDLE_VALUE ) {</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // get its device number</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; STORAGE_DEVICE_NUMBER sdn;</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DWORD dwBytesReturned = 0;</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; res = DeviceIoControl(hDrive, IOCTL_STORAGE_GET_DEVICE_NUMBER, NULL, 0, &amp;sdn, sizeof(sdn), &amp;dwBytesReturned, NULL);</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( res ) {</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( DeviceNumber == (long)sdn.DeviceNumber ) { &nbsp;// match the given device number with the one of the current device</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CloseHandle(hDrive);</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SetupDiDestroyDeviceInfoList(hDevInfo);</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return spdd.DevInst;</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CloseHandle(hDrive);</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; }</span>
<span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; dwIndex++;</span>
<span class="st0">&nbsp; &nbsp; }</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; SetupDiDestroyDeviceInfoList(hDevInfo);</span>
&nbsp;
<span class="st0">&nbsp; &nbsp; return 0;</span>
<span class="st0">}</span>
<span class="st0">//-----------------------------------------------------------</span></pre></td></tr></table></div></td></tr></tbody></table></div>
				   </div>
			   </div><br />
<br />
Скомпилированный EXE и исходник VB в архиве.<br />
<br />
<font color="DarkGreen"><b>Обновление 15.12.2012</b></font><br />
Исправлен баг с определением кардридера (или дисковода), как флешки.<br />
<br />
___________________<br />
В нашей орг-ции часто приходится передавать результаты работы через флешку, поэтому актуально.<br />
Кроме того, когда-то моя флешка не выдержала необдуманного отключения (во времена, когда интернет был плохой - пользовались в интернет-клубах. А там бац - &quot;Ваше время истекло&quot;. Нечего делать - выдернул флеху. Домой - а она не работает.</div>


<!-- attachments -->
	<div style="margin-top:10px">

		
		
		
		
			<fieldset class="fieldset">
				<legend>Вложения</legend>
				<table cellpadding="0" cellspacing="3" border="0">
				<tr>
	<td><img loading="lazy" decoding="async" class="inlineimg" src="http://www.cyberforum.ru//cyberstatic.net/images/attach/rar.gif" alt="Тип файла: rar" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
	<td><a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=1591&amp;d=1355600092">FlashEject.rar</a> (31.3 Кб, 1048 просмотров)</td>
</tr>
				</table>
			</fieldset>
		

	</div>
<!-- / attachments -->
]]></content:encoded>
			<dc:creator>Dragokas</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/218284/627.html</guid>
		</item>
		<item>
			<title>Существует ли файл в папке Windows\System32 на 64-разрядной ОС (или обход механизма File System Redirector)</title>
			<link>https://www.cyberforum.ru/blogs/218284/617.html</link>
			<pubDate>Sun, 12 Aug 2012 01:56:23 GMT</pubDate>
			<description>*Проведем эксперимент*, если Вы владелец 64-разрядной версии ОС Windows: 
 
1. Откройте стандартный...</description>
			<content:encoded><![CDATA[<div><b>Проведем эксперимент</b>, если Вы владелец 64-разрядной версии ОС Windows:<br />
<br />
1. Откройте стандартный поиск, или проводник (если ver. OS &gt; XP).<br />
Пишем в строке поиска MSG.exe<br />
<u><i>Результат:</i></u> найден в папке windows\system32<br />
2. Запускаем любой 32-битный файловый менеджер (например, Total Commander)<br />
Можем просто пролистать файлы в папке System32,<br />
а можем указать во встроенном поиске (ALT+F7) MSG.exe<br />
<u><i>Результат:</i></u> найдено 0 файлов. Вот так <i><u>сюрприз.</u></i> :)<br />
<br />
Кроме того, попытавшись сделать тоже самое 
			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">средствами любимого Visual Basic,</div>
				   <div class="spoiler-body">
					   <br />
Это моя коллекция 7 способов проверок наличия файла, так что сильно не пугайтесь объемом кода :D<br />
<div class="codeblock"><table class="vb"><thead><tr><td colspan="2" id="800679311"  class="head">Visual Basic</td></tr></thead><tbody><tr class="li1"><td><div id="800679311" style="height: 350px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
</pre></td><td class="de1"><pre class="de1"><span class="kw2">Private</span> <span class="kw4">Declare</span> <span class="kw2">Function</span> PathFileExists Lib <span class="st0">&quot;shlwapi.dll&quot;</span> Alias <span class="st0">&quot;PathFileExistsA&quot;</span> _
&nbsp; &nbsp; (<span class="kw4">ByVal</span> pszPath <span class="kw4">As</span> <span class="kw1">String</span>) <span class="kw4">As</span> <span class="kw1">Long</span>
<span class="kw2">Private</span> <span class="kw4">Declare</span> <span class="kw2">Function</span> GetFileAttributes Lib <span class="st0">&quot;kernel32.dll&quot;</span> Alias <span class="st0">&quot;GetFileAttributesA&quot;</span> _
&nbsp; &nbsp; (<span class="kw4">ByVal</span> lpFileName <span class="kw4">As</span> <span class="kw1">String</span>) <span class="kw4">As</span> <span class="kw1">Long</span>
&nbsp;
Const FILE_ATTRIBUTE_DIRECTORY = &amp;H10
Const INVALID_HANDLE_VALUE = &amp;HFFFFFFFF
&nbsp;
<span class="kw2">Private</span> <span class="kw4">Declare</span> <span class="kw2">Function</span> FindFirstFile Lib <span class="st0">&quot;kernel32&quot;</span> Alias <span class="st0">&quot;FindFirstFileA&quot;</span> _
&nbsp; &nbsp; (<span class="kw4">ByVal</span> lpFileName <span class="kw4">As</span> <span class="kw1">String</span>, lpFindFileData <span class="kw4">As</span> WIN32_FIND_DATA) <span class="kw4">As</span> <span class="kw1">Long</span>
<span class="kw2">Private</span> <span class="kw4">Declare</span> <span class="kw2">Function</span> FindClose Lib <span class="st0">&quot;kernel32&quot;</span> (<span class="kw4">ByVal</span> hFindFile <span class="kw4">As</span> <span class="kw1">Long</span>) <span class="kw4">As</span> <span class="kw1">Long</span>
&nbsp;
Const MAX_PATH <span class="kw4">As</span> <span class="kw1">Long</span> = 260
&nbsp;
<span class="kw2">Private</span> <span class="kw4">Type</span> FILETIME
&nbsp; &nbsp;dwLowDateTime <span class="kw4">As</span> <span class="kw1">Long</span>
&nbsp; &nbsp;dwHighDateTime <span class="kw4">As</span> <span class="kw1">Long</span>
<span class="kw3">End</span> <span class="kw4">Type</span>
&nbsp;
<span class="kw2">Private</span> <span class="kw4">Type</span> WIN32_FIND_DATA
&nbsp; &nbsp;dwFileAttributes <span class="kw4">As</span> <span class="kw1">Long</span>
&nbsp; &nbsp;ftCreationTime <span class="kw4">As</span> FILETIME
&nbsp; &nbsp;ftLastAccessTime <span class="kw4">As</span> FILETIME
&nbsp; &nbsp;ftLastWriteTime <span class="kw4">As</span> FILETIME
&nbsp; &nbsp;nFileSizeHigh <span class="kw4">As</span> <span class="kw1">Long</span>
&nbsp; &nbsp;nFileSizeLow <span class="kw4">As</span> <span class="kw1">Long</span>
&nbsp; &nbsp;dwReserved0 <span class="kw4">As</span> <span class="kw1">Long</span>
&nbsp; &nbsp;dwReserved1 <span class="kw4">As</span> <span class="kw1">Long</span>
&nbsp; &nbsp;cFileName <span class="kw4">As</span> <span class="kw1">String</span> * MAX_PATH
&nbsp; &nbsp;cAlternate <span class="kw4">As</span> <span class="kw1">String</span> * 14
<span class="kw3">End</span> <span class="kw4">Type</span>
&nbsp;
<span class="kw2">Private</span> <span class="kw4">Declare</span> <span class="kw2">Function</span> CreateFile Lib <span class="st0">&quot;kernel32&quot;</span> Alias <span class="st0">&quot;CreateFileA&quot;</span> _
&nbsp; &nbsp; (<span class="kw4">ByVal</span> lpFileName <span class="kw4">As</span> <span class="kw1">String</span>, _
&nbsp; &nbsp; <span class="kw4">ByVal</span> dwDesiredAccess <span class="kw4">As</span> <span class="kw1">Long</span>, _
&nbsp; &nbsp; <span class="kw4">ByVal</span> dwShareMode <span class="kw4">As</span> <span class="kw1">Long</span>, _
&nbsp; &nbsp; lpSecurityAttributes <span class="kw4">As</span> SECURITY_ATTRIBUTES, _
&nbsp; &nbsp; <span class="kw4">ByVal</span> dwCreationDisposition <span class="kw4">As</span> <span class="kw1">Long</span>, _
&nbsp; &nbsp; <span class="kw4">ByVal</span> dwFlagsAndAttributes <span class="kw4">As</span> <span class="kw1">Long</span>, _
&nbsp; &nbsp; <span class="kw4">ByVal</span> hTemplateFile <span class="kw4">As</span> <span class="kw1">Long</span>) <span class="kw4">As</span> <span class="kw1">Long</span>
<span class="kw2">Private</span> <span class="kw4">Declare</span> <span class="kw2">Function</span> CloseHandle Lib <span class="st0">&quot;kernel32&quot;</span> (<span class="kw4">ByVal</span> hObject <span class="kw4">As</span> <span class="kw1">Long</span>) <span class="kw4">As</span> <span class="kw1">Long</span>
&nbsp;
Const FILE_SHARE_READ = &amp;H1
Const FILE_SHARE_WRITE = &amp;H2
Const FILE_FLAG_SEQUENTIAL_SCAN = &amp;H8000000
Const FILE_FLAG_NO_BUFFERING = &amp;H20000000
Const OPEN_EXISTING = 3
&nbsp;
<span class="kw2">Private</span> <span class="kw4">Type</span> SECURITY_ATTRIBUTES
&nbsp; &nbsp; &nbsp; &nbsp; nLength <span class="kw4">As</span> <span class="kw1">Long</span>
&nbsp; &nbsp; &nbsp; &nbsp; lpSecurityDescriptor <span class="kw4">As</span> <span class="kw1">Long</span>
&nbsp; &nbsp; &nbsp; &nbsp; bInheritHandle <span class="kw4">As</span> <span class="kw1">Long</span>
<span class="kw3">End</span> <span class="kw4">Type</span>
&nbsp;
<span class="kw2">Option</span> <span class="kw2">Explicit</span>
&nbsp;
<span class="kw2">Private</span> <span class="kw2">Sub</span> Command1_Click()
<span class="kw4">Dim</span> exe <span class="kw4">As</span> <span class="kw1">String</span>, oFSO <span class="kw4">As</span> <span class="kw1">Object</span>, ret <span class="kw4">As</span> <span class="kw1">Long</span>
&nbsp;
exe = Environ(<span class="st0">&quot;windir&quot;</span>) &amp; <span class="st0">&quot;\system32\msg.exe&quot;</span> <span class="co1">'C:\Windows\System32\MSG.exe</span>
&nbsp;
<span class="co1">'Встроенная функция Dir</span>
<span class="kw3">If</span> Dir$(exe, vbReadOnly <span class="kw3">Or</span> vbSystem <span class="kw3">Or</span> vbHidden) &lt;&gt; vbNullString <span class="kw3">Then</span> MsgBox <span class="st0">&quot;With Dir$ - msg.exe Exists!&quot;</span>
&nbsp;
<span class="co1">'Объект WSH FilesystemObject</span>
<span class="kw4">Set</span> oFSO = <span class="kw2">CreateObject</span>(<span class="st0">&quot;Scripting.FilesystemObject&quot;</span>)
<span class="kw3">If</span> oFSO.FileExists(exe) <span class="kw3">Then</span> MsgBox <span class="st0">&quot;With FSO - msg.exe Exists!&quot;</span>
<span class="kw4">Set</span> oFSO = <span class="kw5">Nothing</span>
&nbsp;
<span class="co1">'Встроенная функция проверки атрибутов</span>
<span class="kw4">On</span> <span class="kw4">Error</span> <span class="kw4">Resume</span> <span class="kw3">Next</span>
ret = GetAttr(exe)
<span class="kw3">If</span> Err.Number = 0 <span class="kw3">Then</span> MsgBox <span class="st0">&quot;With Attributes Check - msg.exe Exists!&quot;</span>
<span class="kw4">On</span> <span class="kw4">Error</span> <span class="kw3">GoTo</span> 0
&nbsp;
<span class="co1">'API-функция PathFileExists</span>
<span class="kw3">If</span> PathFileExists(exe) = 1 <span class="kw3">Then</span> MsgBox <span class="st0">&quot;With API PathFileExists - msg.exe Exists!&quot;</span>
&nbsp;
<span class="co1">'API-функция GetFileAttributes</span>
ret = GetFileAttributes(exe)
<span class="kw3">If</span> ret &lt;&gt; INVALID_HANDLE_VALUE <span class="kw3">And</span> (0 = (ret <span class="kw3">And</span> FILE_ATTRIBUTE_DIRECTORY)) <span class="kw3">Then</span>
&nbsp; &nbsp; MsgBox <span class="st0">&quot;With API GetFileAttributes - msg.exe Exists!&quot;</span>
<span class="kw3">End</span> <span class="kw3">If</span>
&nbsp;
<span class="co1">'API-функция FindFirstFile</span>
<span class="kw4">Dim</span> WFD <span class="kw4">As</span> WIN32_FIND_DATA, hFile <span class="kw4">As</span> <span class="kw1">Long</span>
hFile = FindFirstFile(exe, WFD)
<span class="kw2">Call</span> FindClose(hFile)
<span class="kw3">If</span> hFile &lt;&gt; INVALID_HANDLE_VALUE <span class="kw3">Then</span> MsgBox <span class="st0">&quot;With API FindFirstFile - msg.exe Exists!&quot;</span>
&nbsp;
<span class="co1">'API-функция CreateFile</span>
<span class="kw4">Dim</span> Security <span class="kw4">As</span> SECURITY_ATTRIBUTES
hFile = CreateFile(exe, 0, FILE_SHARE_READ <span class="kw3">Or</span> FILE_SHARE_WRITE, Security, OPEN_EXISTING, _
&nbsp; &nbsp; FILE_FLAG_NO_BUFFERING <span class="kw3">Or</span> FILE_FLAG_SEQUENTIAL_SCAN, 0)
<span class="kw3">If</span> hFile &lt;&gt; INVALID_HANDLE_VALUE <span class="kw3">Then</span>
&nbsp; &nbsp; CloseHandle (hFile)
&nbsp; &nbsp; MsgBox <span class="st0">&quot;With API CreateFile - msg.exe Exists!&quot;</span>
<span class="kw3">End</span> <span class="kw3">If</span>
&nbsp;
<span class="kw3">End</span> <span class="kw2">Sub</span></pre></td></tr></table></div></td></tr></tbody></table></div>
				   </div>
			   </div><br />
мы получим также нулевой результат.<br />
<br />
На эту удочку я недавно попался при отладке <a href="https://www.cyberforum.ru/cmd-bat/thread634994.html">Batch-сценария.</a><br />
Виновником оказался так называемый механизм перенаправления файловых запросов в 64-разрядной версии ОС Windows (File System Redirector), о котором <a rel="nofollow noopener noreferrer" href="http://msdn.microsoft.com/en-us/library/aa384187(VS.85).aspx" target="_blank" title="http://msdn.microsoft.com/en-us/library/aa384187(VS.85).aspx">рассказывает Microsoft.</a><br />
<br />
То есть на самом деле запросы 32-битных приложений при попытке обратится к системной директории System32 <br />
файловая система автоматически переадресовывает в папку SysWOW64.<br />
Почему так сделано, можно почитать <a rel="nofollow noopener noreferrer" href="http://www.codeproject.com/Tips/352778/Why-does-WoW64-use-register-and-file-system-redire" target="_blank" title="http://www.codeproject.com/Tips/352778/Why-does-WoW64-use-register-and-file-system-redire">здесь.</a><br />
<br />
Но как же нам обойти систему виртуализации.<br />
Вот реализация на VB принципа, указанного в статье MS:<br />
<br />
<b>Способ 1.</b> Временное отключение механизма перенаправления файловых запросов.<br />
<div class="codeblock"><table class="vb"><thead><tr><td colspan="2" id="9669601"  class="head">Visual Basic</td></tr></thead><tbody><tr class="li1"><td><div id="9669601" style="height: 318px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="de1"><pre class="de1"><span class="kw2">Private</span> <span class="kw4">Declare</span> <span class="kw2">Function</span> Wow64EnableWow64FsRedirection Lib <span class="st0">&quot;kernel32.dll&quot;</span> _
&nbsp; &nbsp; (<span class="kw4">ByVal</span> IsEnable <span class="kw4">As</span> <span class="kw1">Boolean</span>) <span class="kw4">As</span> <span class="kw1">Boolean</span>
&nbsp;
<span class="kw2">Option</span> <span class="kw2">Explicit</span>
&nbsp;
<span class="kw2">Sub</span> System32file_Exists()
<span class="kw4">Dim</span> ret_redir <span class="kw4">As</span> <span class="kw1">Boolean</span>
<span class="kw4">Dim</span> exists <span class="kw4">As</span> <span class="kw1">Boolean</span>
<span class="kw4">Dim</span> exe <span class="kw4">As</span> <span class="kw1">String</span>
&nbsp;
exe = Environ(<span class="st0">&quot;windir&quot;</span>) &amp; <span class="st0">&quot;\system32\msg.exe&quot;</span>
&nbsp;
ret_redir = Wow64EnableWow64FsRedirection(<span class="kw5">False</span>)
<span class="kw3">If</span> Dir$(exe, vbReadOnly <span class="kw3">Or</span> vbSystem <span class="kw3">Or</span> vbHidden) &lt;&gt; vbNullString <span class="kw3">Then</span> exists = <span class="kw5">True</span>
ret_redir = Wow64EnableWow64FsRedirection(<span class="kw5">True</span>)
&nbsp;
<span class="kw3">If</span> exists <span class="kw3">Then</span> MsgBox exe &amp; <span class="st0">&quot; is Exists!&quot;</span>
<span class="kw3">End</span> <span class="kw2">Sub</span></pre></td></tr></table></div></td></tr></tbody></table></div><b>Способ 2</b>. Обращаемся к папке System32 через алиас &quot;Sysnative&quot;.<br />
<br />
<div class="codeblock"><table class="vb"><thead><tr><td colspan="2" id="302301652"  class="head">Visual Basic</td></tr></thead><tbody><tr class="li1"><td><div id="302301652" style="height: 222px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="de1"><pre class="de1"><span class="kw2">Option</span> <span class="kw2">Explicit</span>
&nbsp;
<span class="kw2">Sub</span> System32file_Exists()
<span class="kw4">Dim</span> exe <span class="kw4">As</span> <span class="kw1">String</span>
&nbsp;
exe = Environ(<span class="st0">&quot;windir&quot;</span>) &amp; <span class="st0">&quot;\system32\msg.exe&quot;</span>
exe = Replace(exe, <span class="st0">&quot;system32&quot;</span>, <span class="st0">&quot;Sysnative&quot;</span>, , vbTextCompare)
&nbsp;
<span class="kw3">If</span> Dir$(exe, vbReadOnly <span class="kw3">Or</span> vbSystem <span class="kw3">Or</span> vbHidden) &lt;&gt; vbNullString <span class="kw3">Then</span>
&nbsp; &nbsp; MsgBox exe &amp; <span class="st0">&quot; is Exists!&quot;</span>
<span class="kw3">End</span> <span class="kw3">If</span>
<span class="kw3">End</span> <span class="kw2">Sub</span></pre></td></tr></table></div></td></tr></tbody></table></div><i>Недостатки способа № 1</i>: <br />
1. Относительная небезопасность: реактивацию перенаправления ФС нужно сделать как можно быстрее,<br />
чтобы не прервать работу c 64-битными библиотеками в этом потоке.<br />
2. Еще есть информация о предупреждении UAC при попытке снять режим File System Redirection. <br />
Запуск примера на ОС Win 7 x64 Ultimate с максимальным уровнем UAC показал, что защита молчит во время этой манипуляции.<br />
3. Также данная API-функция будет работать только на 64-разрядной версии ОС,<br />
поэтому разрядность тоже 
			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">нужно проверять.</div>
				   <div class="spoiler-body">
					   <br />
<b>Проверка разрядности ОС.</b> Вот пару вариантов от меня:<br />
<br />
1. Проверяем наличие системной папки с использованием переадресации через тот самый алиас &quot;Sysnative&quot;.<br />
<div class="codeblock"><table class="vb"><thead><tr><td colspan="2" id="785462397"  class="head">Visual Basic</td></tr></thead><tbody><tr class="li1"><td><div id="785462397" style="height: 94px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
</pre></td><td class="de1"><pre class="de1"><span class="kw2">Public</span> <span class="kw2">Function</span> Is64system() <span class="kw4">As</span> <span class="kw1">Boolean</span>
<span class="kw4">On</span> <span class="kw4">Error</span> <span class="kw4">Resume</span> <span class="kw3">Next</span>
Is64system = GetAttr(Environ(<span class="st0">&quot;windir&quot;</span>) &amp; <span class="st0">&quot;\Sysnative&quot;</span>) <span class="kw3">And</span> vbDirectory
<span class="kw3">End</span> <span class="kw2">Function</span></pre></td></tr></table></div></td></tr></tbody></table></div>2. Через WSH читаем переменные среды окружения.<br />
<div class="codeblock"><table class="vb"><thead><tr><td colspan="2" id="424523990"  class="head">Visual Basic</td></tr></thead><tbody><tr class="li1"><td><div id="424523990" style="height: 190px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
</pre></td><td class="de1"><pre class="de1"><span class="kw2">Public</span> <span class="kw2">Function</span> Is64system() <span class="kw4">As</span> <span class="kw1">Boolean</span>
<span class="kw4">On</span> <span class="kw4">Error</span> <span class="kw4">Resume</span> <span class="kw3">Next</span> <span class="co1">'PROCESSOR_ARCHITEW6432 on x32 is NOT DEFINED</span>
<span class="kw4">Dim</span> WshShell <span class="kw4">As</span> <span class="kw1">Object</span>
<span class="kw4">Set</span> WshShell = <span class="kw2">CreateObject</span>(<span class="st0">&quot;WScript.Shell&quot;</span>)
<span class="kw3">If</span> WshShell.Environment(<span class="st0">&quot;PROCESS&quot;</span>)(<span class="st0">&quot;PROCESSOR_ARCHITECTURE&quot;</span>) = <span class="st0">&quot;AMD64&quot;</span> <span class="kw3">Or</span> _
&nbsp; &nbsp;WshShell.Environment(<span class="st0">&quot;PROCESS&quot;</span>)(<span class="st0">&quot;PROCESSOR_ARCHITEW6432&quot;</span>) = <span class="st0">&quot;AMD64&quot;</span> <span class="kw3">Then</span>
&nbsp; &nbsp; Is64system = <span class="kw5">True</span>
<span class="kw3">End</span> <span class="kw3">If</span>
<span class="kw4">Set</span> WshShell = <span class="kw5">Nothing</span>
<span class="kw3">End</span> <span class="kw2">Function</span></pre></td></tr></table></div></td></tr></tbody></table></div>
				   </div>
			   </div><br />
<br />
Стоит добавить, что подобная ситуация также касается ветки реестра HKLM\Software\Wow6432Node<br />
Для обхода этого также существует <a rel="nofollow noopener noreferrer" href="http://www.viva64.com/ru/k/0029/" target="_blank" title="http://www.viva64.com/ru/k/0029/">специальный алиас.</a><br />
<br />
<div class="smallfont offtopic" onmouseover="this.style.color='#000000';" onmouseout="this.style.color='#888888';">
				<p><b>Не по теме:</b></p>
				<p>Хотелось бы знать, можно ли заставить систему думать, что запрос к файловой системе исходит от 64-битного приложения?</p>
				</div><br />
Комментарии?</div>


<!-- attachments -->
	<div style="margin-top:10px">

		
		
		
		
			<fieldset class="fieldset">
				<legend>Вложения</legend>
				<table cellpadding="0" cellspacing="3" border="0">
				<tr>
	<td><img loading="lazy" decoding="async" class="inlineimg" src="http://www.cyberforum.ru//cyberstatic.net/images/attach/xls.gif" alt="Тип файла: xls" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
	<td><a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=1137&amp;d=1344736561" target="_blank">File_system_Redirector_bypass.XLS.xls</a> (44.5 Кб, 769 просмотров)</td>
</tr><tr>
	<td><img loading="lazy" decoding="async" class="inlineimg" src="http://www.cyberforum.ru//cyberstatic.net/images/attach/zip.gif" alt="Тип файла: zip" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
	<td><a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=1138&amp;d=1344736568">FSRedirector_bypass_VB.zip</a> (2.6 Кб, 583 просмотров)</td>
</tr>
				</table>
			</fieldset>
		

	</div>
<!-- / attachments -->
]]></content:encoded>
			<dc:creator>Dragokas</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/218284/617.html</guid>
		</item>
		<item>
			<title>Парсинг предложения на отдельные слова (VB)</title>
			<link>https://www.cyberforum.ru/blogs/218284/540.html</link>
			<pubDate>Mon, 09 Jul 2012 21:55:16 GMT</pubDate>
			<description><![CDATA[Наиболее универсальный для VB алгоритм, имхо: 
 
1) Заменяем все "не-буквы" (кроме знака дефис "-")...]]></description>
			<content:encoded><![CDATA[<div>Наиболее универсальный для VB алгоритм, имхо:<br />
<br />
1) Заменяем все &quot;не-буквы&quot; (кроме знака дефис &quot;-&quot;) на пробел.<br />
2) Заменяем сочитание &quot; - &quot; на пробел.<br />
3) Удаляем в строке слева и справа все пробелы.<br />
4) Заменяем все двойные пробелы на одиночные (пока такие встречаются).<br />
5) Выполняем команду разбиения предложения на слова по пробелам Arr=Split(St) в масив (Variant-переменную).<br />
<br />
Этот код демонстрирует подсчет количества указанного пользователем слова в заранее заданном предложении.<br />
Алгоритм завершается:<br />
5) обратной заменой всех одиночных пробелов на двойные;<br />
6) вставкой слева и справа строки одиночного пробела<br />
 - с целью быстрого подсчета кол-ва слов командой Replace с маской &quot; слово &quot;<br />

			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">Код VB с поддержкой украинского алфавита:</div>
				   <div class="spoiler-body">
					   <br />
<div class="codeblock"><table class="vb"><thead><tr><td colspan="2" id="747942592"  class="head">Visual Basic</td></tr></thead><tbody><tr class="li1"><td><div id="747942592" style="height: 350px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="de1"><pre class="de1"><span class="kw2">Option</span> <span class="kw2">Explicit</span>
&nbsp;
<span class="kw2">Sub</span> Words_Count()
<span class="kw4">Dim</span> L <span class="kw4">As</span> <span class="kw1">String</span> * 1, St$, What$, i%
St = InputBox(<span class="st0">&quot;Введите предложение:&quot;</span>, , <span class="st0">&quot;Привет! Чмок! Приветики! Чмок! Приветики! Чмок! Поки-Поки! Поки!&quot;</span>)
What = InputBox(<span class="st0">&quot;Введите слово для поиска: &quot;</span>)
<span class="kw3">For</span> i = 1 <span class="kw3">To</span> Len(St)
&nbsp; &nbsp; L = Mid$(St, i, 1)
&nbsp; &nbsp; <span class="kw3">If</span> L <span class="kw3">Like</span> <span class="st0">&quot;[!A-Za-zА-яҐЁЄЇіґёєї'‘’-]&quot;</span> <span class="kw3">Then</span> Mid$(St, i, 1) = <span class="st0">&quot; &quot;</span>
<span class="kw3">Next</span>
St = Replace$(St, <span class="st0">&quot; - &quot;</span>, <span class="st0">&quot; &quot;</span>)
St = Trim(St)
<span class="kw3">Do</span>
&nbsp; &nbsp; i = Len(St)
&nbsp; &nbsp; St = Replace$(St, <span class="st0">&quot; &nbsp;&quot;</span>, <span class="st0">&quot; &quot;</span>)
<span class="kw3">Loop</span> <span class="kw3">Until</span> i = Len(St)
St = Replace$(St, <span class="st0">&quot; &quot;</span>, <span class="st0">&quot; &nbsp;&quot;</span>)
St = <span class="st0">&quot; &quot;</span> + St + <span class="st0">&quot; &quot;</span>
MsgBox <span class="st0">&quot;В указанном тексте слово &quot;</span><span class="st0">&quot;&quot;</span> + What + <span class="st0">&quot;&quot;</span><span class="st0">&quot; встречается &quot;</span> &amp; _
&nbsp; &nbsp; (Len(St) - Len(Replace$(LCase$(St), <span class="st0">&quot; &quot;</span> + LCase$(What) + <span class="st0">&quot; &quot;</span>, <span class="st0">&quot;&quot;</span>))) / (Len(What) + 2) &amp; <span class="st0">&quot; раз(а).&quot;</span>
<span class="kw3">End</span> <span class="kw2">Sub</span></pre></td></tr></table></div></td></tr></tbody></table></div>
				   </div>
			   </div><br />
<br />
Танцы с дефисом предназначены как ни странно для случаев, когда слово пишется через дефис и считается как единое целое.<br />
Единственное, что может не сработать: ошибка в исходном предложении, когда дефис (&quot;-&quot;) написан слитно с началом или концом слова (я намеренно не усложнял код).<br />
<br />
P.S. Практическая польза также может состоять в возможности сравнения данных, в которых предполагается наличие ошибок (например:<ul><li>разный регистр букв;</li>
<li>лишние знаки (пробелы, точки и пр.)</li>
</ul></div>

]]></content:encoded>
			<dc:creator>Dragokas</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/218284/540.html</guid>
		</item>
		<item>
			<title>Как я ищу нужную мне тему на форуме</title>
			<link>https://www.cyberforum.ru/blogs/218284/539.html</link>
			<pubDate>Mon, 09 Jul 2012 18:10:09 GMT</pubDate>
			<description><![CDATA[*Вариант 1* 
 - открываем поиск на форуме (самая верхняя синяя полоса), нажимаем *"Поиск"*, далее...]]></description>
			<content:encoded><![CDATA[<div><font color="Blue"><b>Вариант 1</b></font><br />
 - открываем поиск на форуме (самая верхняя синяя полоса), нажимаем <b>&quot;Поиск&quot;</b>, далее <b>&quot;Расширенный поиск&quot;</b> - это 2-й пункт), далее &quot;Ключевое слово&quot; - 1, 2 или три слова (пробуйте несколько раз в разных падежах и синонимах), далее &quot;Поиск в разделах&quot;, листаем и выбираем, например VBA, нажимаем &quot;Начать поиск&quot; (если знаете никнейм автора - можете также указать его в отдельном окне).<br />
<i>(кроме того, по моей просьбе окошко с разделами теперь стало шире, т.о. увеличилась &quot;юзабельность&quot;).</i> Спасибо нашему администратору <b><a href="https://www.cyberforum.ru/members/1.html">mik-a-el</a></b><br />
<b>Альтернатива:</b> Заходим в нужный раздел на форуме, 2-я (сверху) синяя полоса, нажимаем <b>&quot;Поиск в разделе&quot;</b>, вводим искомую фразу или словосочитание.<br />
<br />
<b><font color="Blue">Вариант 2</font></b><br />
 - Открываем в браузере Google.com и пишем:<br />
[Раздел] [Ключевые слова] <b>site:cyberforum.ru</b><br />
например: <a href="https://www.google.com.ua/search?client=opera&amp;rls=ru&amp;q=VBA+%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%B8%D1%82%D1%8C+%D1%81%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+%D0%BF%D0%B0%D0%BF%D0%BA%D0%B8+site:cyberforum.ru&amp;sourceid=opera&amp;ie=utf-8&amp;oe=utf-8&amp;channel=suggest">VBA проверить существование папки site:cyberforum.ru</a><br />
<br />
<b><font color="Blue">Вариант 3</font></b><br />
 - В каждом разделе есть <b>прикрепленные темы</b> (выделены жирным и всегда наверху) - я иногда их сам не читаю, а ведь там бывают образцы кода, которые именно сейчас позарез нужны.<br />
И действительно, открываю - бери и пользуйся (за тебя все написано).<br />
<br />
<b><font color="Blue">Вариант 4</font></b><br />
 - Воспользоваться <b>оглавлением справочника</b> (практикума) любой свободной электронной книги по нужному языку программирования (список рекомендованных часто прикреплен, как &quot;Важная&quot; тема в самом верху соответствующего раздела форума).<br />
<br />
<b><font color="Blue">Вариант &quot;Ы&quot;</font></b><br />
 - Вариант &quot;ы&quot; для <i>MS Excel, Word...</i> <b>(запись макроса)</b><br />
Сервис -&gt; Макрос -&gt; Начать запись, выполнить требуемые от макроса действия -&gt; Stop запись -&gt; левый Alt+F11 -&gt; Смотрим готовый код.<br />
<br />
<b><font color="Blue">Вариант Ziro</font></b><br />
 - Использовать сторонние <b>скрипто-само-записывающие программы</b>, например, <br />
для инструментария <b>WMI</b> под Visual Basic, Pyton, Perl, JScript от Microsoft 
			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">есть готовые решения:</div>
				   <div class="spoiler-body">
					   <br />
<b>Раз</b> <a rel="nofollow noopener noreferrer" href="http://www.microsoft.com/en-us/download/details.aspx?id=12028" target="_blank" title="http://www.microsoft.com/en-us/download/details.aspx?id=12028">Scriptomatic 2.0</a><br />
<b>Два</b> <a rel="nofollow noopener noreferrer" href="http://www.microsoft.com/en-us/download/details.aspx?id=8572" target="_blank" title="http://www.microsoft.com/en-us/download/details.aspx?id=8572">WMI Code Creator v1.0</a><br />
Выбираете ветвь и код генерится сам. Нажимаете Run, получаете описания всех свойств устройств прямо в браузере.<br />
<br />
На всякий случай дерево классов, с описанием всех значений: <a rel="nofollow noopener noreferrer" href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa394353(v=vs.85).aspx" target="_blank" title="http://msdn.microsoft.com/en-us/library/windows/desktop/aa394353(v=vs.85).aspx">WMI Win32 Classes</a>
				   </div>
			   </div><br />
Для <b>имитации клавиатурных нажатий и кликов мышью</b> - бесплатная отечественная <a rel="nofollow noopener noreferrer" href="http://www.dimonius.ru/?ghost" target="_blank" title="http://www.dimonius.ru/?ghost">Ghost Automizer</a>, после записи которой Вы можете подредактировать координаты путем редактирования сгенерированного кода.<br />
Тоже самое можно сделать на языке <b>AutoIT</b> с помощью <b>ScriptWriter</b>-а.<br />
<br />
Прочие инструкции:<br />
<a href="https://www.cyberforum.ru/attachments/396747d1268359721">Как загрузить вложение на форум.</a></div>

]]></content:encoded>
			<dc:creator>Dragokas</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/218284/539.html</guid>
		</item>
		<item>
			<title>Стать владельцем папки/файла (One-Click)</title>
			<link>https://www.cyberforum.ru/blogs/218284/220.html</link>
			<pubDate>Thu, 22 Mar 2012 18:31:25 GMT</pubDate>
			<description><![CDATA[Добавляет в контекстное меню Windows пункт "Сбросить права ACL". 
P.S. Используются только...]]></description>
			<content:encoded><![CDATA[<div>Добавляет в контекстное меню Windows пункт &quot;Сбросить права ACL&quot;.<br />
P.S. Используются только стандартные программы Windows из набора Resourse kit.<br />
<br />
<b>Установка:</b><br />
Распаковать.<br />
Запустить Setup.bat<br />
<br />
<b>Использование:</b><br />
Правый клик по нужному файлу/папке, выбрать &quot;Сбросить права ACL&quot;.<br />
<br />
<b>Предназначение:</b><br />
Назначает Вас владельцем указанной папки (файла).<br />
&quot;Сбрасывает&quot; его/ее ACL-таблицу.<br />
<br />
<b>Показания к применению:</b><br />
При попытке файловой операции над файлом/папкой появляется сообщение &quot;У Вас недостаточно прав для выполнения данной операции&quot;. Бывает, когда копируете данные с другого компьютера.<br />
Прим.: данное средство не позволяет переназначить права, если требуемый файл находится вне целевого компьютера (в локальной сети).<br />
<br />
<b>Удаление</b><br />
Запустить delete.bat<br />
<br />

			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">Nizaury Reg-Key Листинг:</div>
				   <div class="spoiler-body">
					   <div class="codeblock"><table class="unknown"><thead><tr><td colspan="2" id="721291866"  class="head">Code</td></tr></thead><tbody><tr class="li1"><td><div id="721291866" style="height: 302px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="de1"><pre class="de1">Windows Registry Editor Version <span class="nu0">5.00</span>
&nbsp;
<span class="br0">&#91;</span>HKEY_CLASSES_ROOT\*\shell\runas<span class="br0">&#93;</span>
@=&quot;Стать владельцем и задать полный доступ к объекту&quot;
&quot;NoWorkingDirectory&quot;=&quot;&quot;
&nbsp;
<span class="br0">&#91;</span>HKEY_CLASSES_ROOT\*\shell\runas\command<span class="br0">&#93;</span>
@=&quot;cmd.exe /c takeown /f \&quot;%1\&quot; &amp;&amp; icacls \&quot;%1\&quot; /grant администраторы:F&quot;
&quot;IsolatedCommand&quot;=&quot;cmd.exe /c takeown /f \&quot;%1\&quot; &amp;&amp; icacls \&quot;%1\&quot; /grant администраторы:F&quot;
&nbsp;
<span class="br0">&#91;</span>HKEY_CLASSES_ROOT\Directory\shell\runas<span class="br0">&#93;</span>
@=&quot;Стать владельцем и задать полный доступ к объекту&quot;
&quot;NoWorkingDirectory&quot;=&quot;&quot;
&nbsp;
<span class="br0">&#91;</span>HKEY_CLASSES_ROOT\Directory\shell\runas\command<span class="br0">&#93;</span>
@=&quot;cmd.exe /c takeown /f \&quot;%1\&quot; /r /d y &amp;&amp; icacls \&quot;%1\&quot; /grant администраторы:F /t&quot;
&quot;IsolatedCommand&quot;=&quot;cmd.exe /c takeown /f \&quot;%1\&quot; /r /d y &amp;&amp; icacls \&quot;%1\&quot; /grant администраторы:F /t&quot;</pre></td></tr></table></div></td></tr></tbody></table></div>
				   </div>
			   </div></div>


<!-- attachments -->
	<div style="margin-top:10px">

		
		
		
		
			<fieldset class="fieldset">
				<legend>Вложения</legend>
				<table cellpadding="0" cellspacing="3" border="0">
				<tr>
	<td><img loading="lazy" decoding="async" class="inlineimg" src="http://www.cyberforum.ru//cyberstatic.net/images/attach/zip.gif" alt="Тип файла: zip" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
	<td><a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=438&amp;d=1332440534">ResetACL.zip</a> (61.2 Кб, 1358 просмотров)</td>
</tr><tr>
	<td><img loading="lazy" decoding="async" class="inlineimg" src="http://www.cyberforum.ru//cyberstatic.net/images/attach/zip.gif" alt="Тип файла: zip" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
	<td><a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=770&amp;d=1339437824">Full_access_by_Nizaury_Regfile.zip</a> (403 байт, 1224 просмотров)</td>
</tr>
				</table>
			</fieldset>
		

	</div>
<!-- / attachments -->
]]></content:encoded>
			<dc:creator>Dragokas</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/218284/220.html</guid>
		</item>
		<item>
			<title>CMD убирает фейковые ярлыки папок USB Flash и создает защитный Autorun.inf</title>
			<link>https://www.cyberforum.ru/blogs/218284/219.html</link>
			<pubDate>Thu, 22 Mar 2012 17:41:34 GMT</pubDate>
			<description>*Актуальная версия теперь в теме:* https://www.cyberforum.ru/cmd-bat/thread699180.html 
 
Обновлено...</description>
			<content:encoded><![CDATA[<div><b><font color="Red">Актуальная версия теперь в теме:</font></b> <a href="https://www.cyberforum.ru/cmd-bat/thread699180.html">https://www.cyberforum.ru/cmd-... 99180.html</a><br />
<br />
Обновлено до v.1.4.1 (10.08.12)<br />
<br />
<b>Использование:</b><br />
Скопировать в корень съемного диска (USB Flash Drive).<br />
Запустить.<br />
<br />
<b>Показания к применению:</b><br />
Ваша флешка побывала на компьютере с вирусом, скрывающим папки, а вместо них - теперь ярлыки.<br />
Вы хотите, чтобы на флешке нельзя было создать autorun.inf, который дает команду на запуск паразитов.<br />
<br />
<b>Функционал:</b><br />
1. Удаление файлов с расширением *.lnk (ярлыки), соответствующих именам папок.<br />
2. Снятие атрибутов с корневых папок (скрытый, системный).<br />
3. Удаление модифицированных системных папок &quot;recycled&quot;, &quot;recycler&quot;, &quot;System Volume Information&quot;.<br />
4. Удаление файла автозапуска &quot;autorun.inf&quot;.<br />
5. Создание папки &quot;autorun.inf&quot;, внутри которой находяться папки с системными именами.<br />
6. Удаление всех файлов с расширением *.exe в папке %appdata%<br />
7. Учитываются особенности работы с именами, где используются буквы украинского алфавита.<br />
Upd. 1.3.<br />
7. Поиск и удаление всех вирусных файлов host.exe<br />
8. Снятие атрибутов только у папок/файлов, которые имеют +Hidden, +System без повторов (а не всех подряд как было раньше).<br />
Upd 1.4<br />
Удаление только ярлыков, которые имеют соответствующие имена папок.<br />
Установка владельцем.<br />
Назначение прав администратора.<br />
Проверка на существование защитной папки перед ее созданием.<br />
Зануление всех сообщений об операциях в т.ч. предупреждений об ошибках.<br />
Удаление дополнительных вирусных файлов (System, Game.cpl) в режиме подтверждения.<br />
Цветовая индикация части этапов работы.<br />
Отменено ожидание ввода пользователем.<br />
Проверка атрибутов папок только по параметру &quot;Скрытый&quot;.<br />
Upd 1.4.1 (только UA-версия)<br />
Сам не знаю :)<br />
<br />
<b>FAQ:</b><br />
<i>Как удалить созданную программой папку Autorun.inf</i><br />
 - Отформатировать флешку:)<br />
<br />
<i>Программа работает слишком долго:</i><br />
 - Вероятно много папок/файлов или за Вами очень внимательно следит антивирус :)<br />
<br />
<i>Зачем удалять программы в корне папки %appdata% ?</i><br />
 - Некоторые вирусы, скрывающие папки, хранят свое тело в папке %appdata%<br />
Другие User или системные программы в корне этой папки не хранятся.<br />
<br />

			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">Листинг исходного кода:</div>
				   <div class="spoiler-body">
					   <div class="codeblock"><table class="bash"><thead><tr><td colspan="2" id="400090042"  class="head">Bash</td></tr></thead><tbody><tr class="li1"><td><div id="400090042" style="height: 350px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
</pre></td><td class="de1"><pre class="de1"><span class="sy0">@</span><span class="kw3">echo</span> off
title Anti Hidden Fast - Видалення наслiдкiв вiрусної дiяльностi ver.1.4.1
color 1a
<span class="kw3">echo</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Maded by Alex Drago.kas -=<span class="nu0">2012</span>=-
<span class="kw3">echo</span> &nbsp; Anti Hidden Fast v.1.4.1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -= Зроблено в Українi :<span class="br0">&#41;</span>
echo.
<span class="kw3">echo</span> &nbsp; Етап <span class="nu0">1</span>. Вiдновлення властивостей корневих папок.
echo.
<span class="kw3">echo</span> &nbsp; Будуть встановленi такi параметри:
<span class="kw3">echo</span> &nbsp; - не <span class="st0">&quot;Прихований&quot;</span>
<span class="kw3">echo</span> &nbsp; - не <span class="st0">&quot;Системний&quot;</span>
<span class="kw3">echo</span> &nbsp; + стати власником
<span class="kw3">echo</span> &nbsp; + надати повнi права
echo.
<span class="kw3">echo</span> &nbsp; Для прискорення операцiї можна тимчасово вимкнути антивiрусне ПЗ.
chcp <span class="nu0">1251</span><span class="sy0">&gt;</span>nul
<span class="kw1">for</span> <span class="sy0">/</span>f <span class="st0">&quot;delims=&quot;</span> <span class="sy0">%%</span>i <span class="kw1">in</span> <span class="br0">&#40;</span><span class="st_h">'dir /b /a:d'</span><span class="br0">&#41;</span> <span class="kw1">do</span> <span class="br0">&#40;</span>
<span class="kw1">for</span> <span class="sy0">/</span>f <span class="st0">&quot;delims={;}&quot;</span> <span class="sy0">%%</span>s <span class="kw1">in</span> <span class="br0">&#40;</span><span class="st_h">'attrib &quot;%%i&quot;'</span><span class="br0">&#41;</span> <span class="kw1">do</span> <span class="br0">&#40;</span>call :oper <span class="st0">&quot;%%s&quot;</span> <span class="st0">&quot;%%i&quot;</span><span class="br0">&#41;</span>
<span class="br0">&#41;</span>
chcp <span class="nu0">866</span><span class="sy0">&gt;</span>nul
echo.
<span class="kw3">echo</span> &nbsp; Етап <span class="nu0">2</span>. Видалення зайвих ярликiв.
::специальный алгоритм поиска ярлыков
chcp <span class="nu0">1251</span><span class="sy0">&gt;</span>nul
<span class="kw1">for</span> <span class="sy0">/</span>f <span class="st0">&quot;delims=&quot;</span> <span class="sy0">%%</span>i <span class="kw1">in</span> <span class="br0">&#40;</span><span class="st_h">'dir /b /a:d'</span><span class="br0">&#41;</span> <span class="kw1">do</span> <span class="kw1">if</span> exist <span class="sy0">%%</span>i.lnk call :killfile <span class="sy0">%%</span>i.lnk
chcp <span class="nu0">866</span><span class="sy0">&gt;</span>nul
::echo.
<span class="kw3">echo</span> &nbsp; Етап <span class="nu0">3</span>. Блокування стороннiх активних процесiв та видалення їх джерела.
<span class="kw1">if</span> exist <span class="sy0">%</span>appdata<span class="sy0">%</span>\<span class="sy0">*</span>.exe <span class="br0">&#40;</span>
<span class="kw1">for</span> <span class="sy0">/</span>f <span class="st0">&quot;delims=&quot;</span> <span class="sy0">%%</span>i <span class="kw1">in</span> <span class="br0">&#40;</span><span class="st_h">'dir %appdata%\*.exe /b /a'</span><span class="br0">&#41;</span> <span class="kw1">do</span> taskkill <span class="sy0">/</span>im <span class="st0">&quot;%%i&quot;</span> <span class="sy0">/</span>t <span class="sy0">/</span>f
call :killfile <span class="sy0">%</span>appdata<span class="sy0">%</span>\<span class="sy0">*</span>.exe
<span class="br0">&#41;</span>
::echo.
<span class="kw3">echo</span> &nbsp; Етап <span class="nu0">4</span>. Видалення файлу автозапуску.
<span class="kw1">if</span> not exist autorun.inf\ <span class="kw1">if</span> exist autorun.inf call :killfile autorun.inf
::echo.
<span class="kw3">echo</span> &nbsp; Етап <span class="nu0">5</span>. Видалення модифiкованих системних папок i чужорiдних файлiв.
<span class="kw1">for</span> <span class="sy0">%%</span>a <span class="kw1">in</span> <span class="br0">&#40;</span><span class="st0">&quot;recycled&quot;</span> <span class="st0">&quot;recycler&quot;</span> <span class="st0">&quot;System Volume Information&quot;</span><span class="br0">&#41;</span> <span class="kw1">do</span> <span class="br0">&#40;</span>
<span class="kw1">if</span> exist <span class="sy0">%%</span>a <span class="br0">&#40;</span>takeown <span class="sy0">/</span>f <span class="sy0">%%</span>a <span class="sy0">/</span>r <span class="sy0">/</span>d y<span class="sy0">&amp;</span><span class="kw3">echo</span> y<span class="sy0">|</span>cacls <span class="sy0">%%</span>a <span class="sy0">/</span>g <span class="sy0">%</span>username<span class="sy0">%</span>:f<span class="sy0">&amp;</span>attrib <span class="re5">-s</span> <span class="re5">-h</span> <span class="sy0">%%</span>a<span class="sy0">&amp;</span>rd <span class="sy0">/</span>s <span class="sy0">/</span>q <span class="sy0">%%</span>a<span class="br0">&#41;</span>
<span class="br0">&#41;</span> <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="kw1">for</span> <span class="sy0">%%</span>a <span class="kw1">in</span> <span class="br0">&#40;</span>game.cpl system<span class="br0">&#41;</span> <span class="kw1">do</span> <span class="br0">&#40;</span><span class="kw1">if</span> exist <span class="sy0">%%</span>a <span class="br0">&#40;</span>
echo.
<span class="kw3">echo</span> Знайдено пiдозрiлий файл - <span class="sy0">%%</span>a. 
<span class="kw3">echo</span> Для видалення натиснiть <span class="st0">&quot;Y&quot;</span> та кнопку <span class="br0">&#123;</span>ENTER<span class="br0">&#125;</span>
<span class="br0">&#40;</span>takeown <span class="sy0">/</span>f <span class="sy0">%%</span>a<span class="sy0">&amp;</span><span class="kw3">echo</span> y<span class="sy0">|</span>cacls <span class="sy0">%%</span>a <span class="sy0">/</span>g <span class="sy0">%</span>username<span class="sy0">%</span>:f<span class="br0">&#41;</span> <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
del <span class="sy0">/</span>f <span class="sy0">/</span>p <span class="sy0">/</span>A <span class="sy0">%%</span>a
<span class="br0">&#41;</span><span class="br0">&#41;</span>
echo.
color 1b
::echo &nbsp; Етап <span class="nu0">5.1</span>. Пошук i видалення файлiв host.exe. Будь ласка, чекайте...
tasklist <span class="sy0">|</span><span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span> FindStr <span class="sy0">/</span>B <span class="sy0">/</span>L <span class="sy0">/</span>I <span class="sy0">/</span>C:host.exe<span class="sy0">&amp;&amp;</span>taskkill <span class="sy0">/</span>im <span class="st0">&quot;host.exe&quot;</span> <span class="sy0">/</span>t <span class="sy0">/</span>f
<span class="br0">&#40;</span><span class="kw1">for</span> <span class="sy0">/</span>f <span class="st0">&quot;tokens=*&quot;</span> <span class="sy0">%%</span>a <span class="kw1">in</span> <span class="br0">&#40;</span><span class="st_h">'Dir /b /s /a:-d host.exe'</span><span class="br0">&#41;</span> Do <span class="br0">&#40;</span>
attrib <span class="re5">-s</span> <span class="re5">-h</span> <span class="st0">&quot;%%a&quot;</span> <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
del <span class="sy0">/</span>f <span class="sy0">/</span>q <span class="st0">&quot;%%a&quot;</span> <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="nu0">2</span><span class="sy0">&gt;</span>nul
::echo.
::echo Операцiю завершено.
::echo.
::echo &nbsp; Натиснiсть будь-яку клавiшу, щоб створити захисну папку проти автозапуску
::echo &nbsp; або хрестик, щоб закрити вiкно.
::pause <span class="sy0">&gt;</span>nul
::echo.
color 1a
<span class="kw3">echo</span> &nbsp; Етап <span class="nu0">6</span>. Створення захисного файлу автозапуску, що не видаляється
<span class="kw3">echo</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; штатними засобами.
<span class="kw1">if</span> not exist autorun.inf\ <span class="kw2">mkdir</span> autorun.inf <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="kw1">if</span> not exist autorun.inf\Dragokas..\ <span class="kw2">mkdir</span> autorun.inf\Dragokas..\ <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="kw1">if</span> not exist autorun.inf\com1\ <span class="kw2">mkdir</span> <span class="st0">&quot;\\?\%~d0\autorun.inf\com1&quot;</span> <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="kw1">if</span> not exist autorun.inf\defence <span class="br0">&#40;</span>
<span class="kw2">mkdir</span> autorun.inf\defence <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="kw3">echo</span> y<span class="sy0">|</span><span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span> cacls autorun.inf\defence <span class="sy0">/</span>d Все
<span class="kw3">echo</span> y<span class="sy0">|</span><span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span> cacls autorun.inf\defence <span class="sy0">/</span>d All
<span class="br0">&#41;</span>
echo.
<span class="kw3">echo</span> Процедуру проведено. Програму буде закрито.
<span class="kw2">ping</span> <span class="re5">-n</span> <span class="nu0">3</span> localhost <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
color 07
goto :eof
&nbsp;
:oper
<span class="kw3">echo</span> <span class="sy0">%</span>1<span class="sy0">|&gt;</span>nul FindStr <span class="sy0">/</span>BIR <span class="st0">&quot;.....H.&quot;</span><span class="sy0">&amp;&amp;</span>attrib <span class="re5">-s</span> <span class="re5">-h</span> <span class="sy0">%</span>2 <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="kw3">echo</span> <span class="sy0">%</span>1<span class="sy0">|&gt;</span>nul FindStr <span class="sy0">/</span>BIR <span class="st0">&quot;.....H.&quot;</span><span class="sy0">&amp;&amp;</span><span class="br0">&#40;</span>
takeown <span class="sy0">/</span>f <span class="sy0">%</span>2 <span class="sy0">/</span>r <span class="sy0">/</span>d y <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="kw3">echo</span> y<span class="sy0">|&gt;</span>nul cacls <span class="sy0">%</span>2 <span class="sy0">/</span>g <span class="sy0">%</span>username<span class="sy0">%</span>:f
attrib <span class="re5">-s</span> <span class="re5">-h</span> <span class="sy0">%</span>2 <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="br0">&#41;</span>
<span class="kw3">exit</span> <span class="sy0">/</span>b
::<span class="sy0">&amp;&amp;</span><span class="kw3">exit</span> <span class="sy0">/</span>b
::echo <span class="sy0">%</span>1<span class="sy0">|&gt;</span>nul FindStr <span class="sy0">/</span>BIR <span class="st0">&quot;....S..&quot;</span><span class="sy0">&amp;&amp;</span>attrib <span class="re5">-s</span> <span class="re5">-h</span> <span class="sy0">%</span>2
::exit <span class="sy0">/</span>b
&nbsp;
:killfile
<span class="br0">&#40;</span>attrib <span class="re5">-s</span> <span class="re5">-h</span> <span class="sy0">%</span>1
del <span class="sy0">/</span>F <span class="sy0">/</span>Q <span class="sy0">%</span>1<span class="sy0">||</span><span class="br0">&#40;</span>takeown <span class="sy0">/</span>f <span class="sy0">%</span>1<span class="sy0">&amp;</span><span class="kw3">echo</span> y<span class="sy0">|</span>cacls <span class="sy0">%</span>1 <span class="sy0">/</span>g <span class="sy0">%</span>username<span class="sy0">%</span>:f<span class="sy0">&amp;&amp;</span>del <span class="sy0">/</span>F <span class="sy0">/</span>Q <span class="sy0">/</span>A <span class="sy0">%</span>1<span class="br0">&#41;</span>
<span class="br0">&#41;</span> <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="kw3">exit</span> <span class="sy0">/</span>b</pre></td></tr></table></div></td></tr></tbody></table></div>
				   </div>
			   </div><br />
<br />
<b>Add.</b> Из уважения к участникам, которые не понимают украинского языка, выкладываю скрипт с переводом на русский.<br />

			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">Листинг (с переводом).</div>
				   <div class="spoiler-body">
					   <div class="codeblock"><table class="bash"><thead><tr><td colspan="2" id="968585342"  class="head">Bash</td></tr></thead><tbody><tr class="li1"><td><div id="968585342" style="height: 350px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
</pre></td><td class="de1"><pre class="de1"><span class="sy0">@</span><span class="kw3">echo</span> off
title Anti Hidden Fast - Удаление следов вирусной деятельности ver.1.4
color 1a
<span class="kw3">echo</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Maded by Alex Drago.kas -=<span class="nu0">2012</span>=-
<span class="kw3">echo</span> &nbsp; Anti Hidden Fast v.1.4 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -= Сделано в Украине :<span class="br0">&#41;</span>
echo.
<span class="kw3">echo</span> &nbsp; Этап <span class="nu0">1</span>. Возобновление свойств корневых папок.
echo.
<span class="kw3">echo</span> &nbsp; Будут установлены такие параметры:
<span class="kw3">echo</span> &nbsp; - не <span class="st0">&quot;Скрытый&quot;</span>
<span class="kw3">echo</span> &nbsp; - не <span class="st0">&quot;Системный&quot;</span>
<span class="kw3">echo</span> &nbsp; + стать собственником
<span class="kw3">echo</span> &nbsp; + предоставить полные права
echo.
<span class="kw3">echo</span> &nbsp; Для ускорения операции можно временно отключить антивирусное ПО.
chcp <span class="nu0">1251</span><span class="sy0">&gt;</span>nul
<span class="kw1">for</span> <span class="sy0">/</span>f <span class="st0">&quot;delims=&quot;</span> <span class="sy0">%%</span>i <span class="kw1">in</span> <span class="br0">&#40;</span><span class="st_h">'dir /b /a:d'</span><span class="br0">&#41;</span> <span class="kw1">do</span> <span class="br0">&#40;</span>
<span class="kw1">for</span> <span class="sy0">/</span>f <span class="st0">&quot;delims={;}&quot;</span> <span class="sy0">%%</span>s <span class="kw1">in</span> <span class="br0">&#40;</span><span class="st_h">'attrib &quot;%%i&quot;'</span><span class="br0">&#41;</span> <span class="kw1">do</span> <span class="br0">&#40;</span>call :oper <span class="st0">&quot;%%s&quot;</span> <span class="st0">&quot;%%i&quot;</span><span class="br0">&#41;</span>
<span class="br0">&#41;</span>
chcp <span class="nu0">866</span><span class="sy0">&gt;</span>nul
echo.
<span class="kw3">echo</span> &nbsp; Этап <span class="nu0">2</span>. Удаление лишних ярлыков.
::специальный алгоритм поиска ярлыков
chcp <span class="nu0">1251</span><span class="sy0">&gt;</span>nul
<span class="kw1">for</span> <span class="sy0">/</span>f <span class="st0">&quot;delims=&quot;</span> <span class="sy0">%%</span>i <span class="kw1">in</span> <span class="br0">&#40;</span><span class="st_h">'dir /b /a:d'</span><span class="br0">&#41;</span> <span class="kw1">do</span> <span class="kw1">if</span> exist <span class="sy0">%%</span>i.lnk call :killfile <span class="sy0">%%</span>i.lnk
chcp <span class="nu0">866</span><span class="sy0">&gt;</span>nul
::echo.
<span class="kw3">echo</span> &nbsp; Этап <span class="nu0">3</span>. Блокирование сторонних активных процессов и удаление их источника.
<span class="kw1">if</span> exist <span class="sy0">%</span>appdata<span class="sy0">%</span>\<span class="sy0">*</span>.exe <span class="br0">&#40;</span>
<span class="kw1">for</span> <span class="sy0">/</span>f <span class="st0">&quot;delims=&quot;</span> <span class="sy0">%%</span>i <span class="kw1">in</span> <span class="br0">&#40;</span><span class="st_h">'dir %appdata%\*.exe /b /a'</span><span class="br0">&#41;</span> <span class="kw1">do</span> taskkill <span class="sy0">/</span>im <span class="st0">&quot;%%i&quot;</span> <span class="sy0">/</span>t <span class="sy0">/</span>f
call :killfile <span class="sy0">%</span>appdata<span class="sy0">%</span>\<span class="sy0">*</span>.exe
<span class="br0">&#41;</span>
::echo.
<span class="kw3">echo</span> &nbsp; Этап <span class="nu0">4</span>. Удаление файла автозапуска.
<span class="kw1">if</span> not exist autorun.inf\ <span class="kw1">if</span> exist autorun.inf call :killfile autorun.inf
::echo.
<span class="kw3">echo</span> &nbsp; Этап <span class="nu0">5</span>. Удаление модифицированных системных папок и инородных файлов.
<span class="kw1">for</span> <span class="sy0">%%</span>a <span class="kw1">in</span> <span class="br0">&#40;</span><span class="st0">&quot;recycled&quot;</span> <span class="st0">&quot;recycler&quot;</span> <span class="st0">&quot;System Volume Information&quot;</span><span class="br0">&#41;</span> <span class="kw1">do</span> <span class="br0">&#40;</span>
<span class="kw1">if</span> exist <span class="sy0">%%</span>a <span class="br0">&#40;</span>takeown <span class="sy0">/</span>f <span class="sy0">%%</span>a <span class="sy0">/</span>r <span class="sy0">/</span>d y<span class="sy0">&amp;</span><span class="kw3">echo</span> y<span class="sy0">|</span>cacls <span class="sy0">%%</span>a <span class="sy0">/</span>g <span class="sy0">%</span>username<span class="sy0">%</span>:f<span class="sy0">&amp;</span>attrib <span class="re5">-s</span> <span class="re5">-h</span> <span class="sy0">%%</span>a<span class="sy0">&amp;</span>rd <span class="sy0">/</span>s <span class="sy0">/</span>q <span class="sy0">%%</span>a<span class="br0">&#41;</span>
<span class="br0">&#41;</span> <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="kw1">for</span> <span class="sy0">%%</span>a <span class="kw1">in</span> <span class="br0">&#40;</span>game.cpl system<span class="br0">&#41;</span> <span class="kw1">do</span> <span class="br0">&#40;</span><span class="kw1">if</span> exist <span class="sy0">%%</span>a <span class="br0">&#40;</span>
echo.
<span class="kw3">echo</span> Найдено подозрительный файл - <span class="sy0">%%</span>a. 
<span class="kw3">echo</span> Для удаления нажмите <span class="st0">&quot;Y&quot;</span> и кнопку <span class="br0">&#123;</span>ENTER<span class="br0">&#125;</span>
<span class="br0">&#40;</span>takeown <span class="sy0">/</span>f <span class="sy0">%%</span>a<span class="sy0">&amp;</span><span class="kw3">echo</span> y<span class="sy0">|</span>cacls <span class="sy0">%%</span>a <span class="sy0">/</span>g <span class="sy0">%</span>username<span class="sy0">%</span>:f<span class="sy0">&amp;&amp;</span>attrib <span class="re5">-s</span> <span class="re5">-h</span> <span class="sy0">%%</span>a<span class="br0">&#41;</span> <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
del <span class="sy0">/</span>f <span class="sy0">/</span>p <span class="sy0">%%</span>a
<span class="br0">&#41;</span><span class="br0">&#41;</span>
echo.
color 1b
::echo &nbsp; Этап <span class="nu0">5.1</span>. Поиск и удаление файлов host.exe. Пожалуйста, подождите...
tasklist <span class="sy0">|</span><span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span> FindStr <span class="sy0">/</span>B <span class="sy0">/</span>L <span class="sy0">/</span>I <span class="sy0">/</span>C:host.exe<span class="sy0">&amp;&amp;</span>taskkill <span class="sy0">/</span>im <span class="st0">&quot;host.exe&quot;</span> <span class="sy0">/</span>t <span class="sy0">/</span>f
<span class="br0">&#40;</span><span class="kw1">for</span> <span class="sy0">/</span>f <span class="st0">&quot;tokens=*&quot;</span> <span class="sy0">%%</span>a <span class="kw1">in</span> <span class="br0">&#40;</span><span class="st_h">'Dir /b /s /a:-d host.exe'</span><span class="br0">&#41;</span> Do <span class="br0">&#40;</span>
attrib <span class="re5">-s</span> <span class="re5">-h</span> <span class="st0">&quot;%%a&quot;</span> <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
del <span class="sy0">/</span>f <span class="sy0">/</span>q <span class="st0">&quot;%%a&quot;</span> <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="nu0">2</span><span class="sy0">&gt;</span>nul
::echo.
::echo Операция завершена.
::echo.
::echo &nbsp; Нажмите любую клавишу, чтобы создать защитную папку против автозапуска
::echo &nbsp; или крестик, чтобы закрыть окно.
::pause <span class="sy0">&gt;</span>nul
::echo.
color 1a
<span class="kw3">echo</span> &nbsp; Этап <span class="nu0">6</span>. Создание защитного файла автозапуска, который не удаляется
<span class="kw3">echo</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; штатными средствами.
<span class="kw1">if</span> not exist autorun.inf\ <span class="kw2">mkdir</span> autorun.inf <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="kw1">if</span> not exist autorun.inf\defence..\ <span class="kw2">mkdir</span> autorun.inf\defence..\ <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="kw1">if</span> not exist autorun.inf\com1\ <span class="kw2">mkdir</span> <span class="st0">&quot;\\?\%~d0\autorun.inf\com1&quot;</span> <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="kw1">if</span> not exist autorun.inf\<span class="nu0">123</span> <span class="br0">&#40;</span>
<span class="kw2">mkdir</span> autorun.inf\<span class="nu0">123</span> <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="kw3">echo</span> y<span class="sy0">|</span><span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span> cacls <span class="st0">&quot;123&quot;</span> <span class="sy0">/</span>d Все
<span class="kw3">echo</span> y<span class="sy0">|</span><span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span> cacls <span class="st0">&quot;123&quot;</span> <span class="sy0">/</span>d All
<span class="br0">&#41;</span>
echo.
<span class="kw3">echo</span> Процедура проведена. Программа будет закрыта.
<span class="kw2">ping</span> <span class="re5">-n</span> <span class="nu0">3</span> localhost <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
color 07
goto :eof
&nbsp;
:oper
<span class="kw3">echo</span> <span class="sy0">%</span>1<span class="sy0">|&gt;</span>nul FindStr <span class="sy0">/</span>BIR <span class="st0">&quot;.....H.&quot;</span><span class="sy0">&amp;&amp;</span>attrib <span class="re5">-s</span> <span class="re5">-h</span> <span class="sy0">%</span>2 <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="kw3">echo</span> <span class="sy0">%</span>1<span class="sy0">|&gt;</span>nul FindStr <span class="sy0">/</span>BIR <span class="st0">&quot;.....H.&quot;</span><span class="sy0">&amp;&amp;</span><span class="br0">&#40;</span>
takeown <span class="sy0">/</span>f <span class="sy0">%</span>2 <span class="sy0">/</span>r <span class="sy0">/</span>d y <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="kw3">echo</span> y<span class="sy0">|&gt;</span>nul cacls <span class="sy0">%</span>2 <span class="sy0">/</span>g <span class="sy0">%</span>username<span class="sy0">%</span>:f
attrib <span class="re5">-s</span> <span class="re5">-h</span> <span class="sy0">%</span>2 <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span>
<span class="br0">&#41;</span>
<span class="kw3">exit</span> <span class="sy0">/</span>b
::<span class="sy0">&amp;&amp;</span><span class="kw3">exit</span> <span class="sy0">/</span>b
::echo <span class="sy0">%</span>1<span class="sy0">|&gt;</span>nul FindStr <span class="sy0">/</span>BIR <span class="st0">&quot;....S..&quot;</span><span class="sy0">&amp;&amp;</span>attrib <span class="re5">-s</span> <span class="re5">-h</span> <span class="sy0">%</span>2
::exit <span class="sy0">/</span>b
&nbsp;
:killfile
<span class="br0">&#40;</span>attrib <span class="re5">-s</span> <span class="re5">-h</span> <span class="sy0">%</span>1
del <span class="sy0">/</span>F <span class="sy0">/</span>Q <span class="sy0">%</span>1<span class="sy0">||</span><span class="br0">&#40;</span>takeown <span class="sy0">/</span>f <span class="sy0">%</span>1<span class="sy0">&amp;</span><span class="kw3">echo</span> y<span class="sy0">|</span>cacls <span class="sy0">%</span>1 <span class="sy0">/</span>g <span class="sy0">%</span>username<span class="sy0">%</span>:f<span class="sy0">&amp;&amp;</span>attrib <span class="re5">-s</span> <span class="re5">-h</span> <span class="sy0">%</span>1<span class="sy0">&amp;&amp;</span>del <span class="sy0">/</span>F <span class="sy0">/</span>Q <span class="sy0">%</span>1<span class="br0">&#41;</span>
<span class="br0">&#41;</span> <span class="nu0">1</span><span class="sy0">&gt;</span>nul <span class="nu0">2</span><span class="sy0">&gt;&amp;</span><span class="nu0">1</span></pre></td></tr></table></div></td></tr></tbody></table></div>
				   </div>
			   </div><br />
<br />
Ссылки по теме:<br />
https://www.cyberforum.ru/security/thread238290.html</div>


<!-- attachments -->
	<div style="margin-top:10px">

		
		
		
		
			<fieldset class="fieldset">
				<legend>Вложения</legend>
				<table cellpadding="0" cellspacing="3" border="0">
				<tr>
	<td><img loading="lazy" decoding="async" class="inlineimg" src="http://www.cyberforum.ru//cyberstatic.net/images/attach/zip.gif" alt="Тип файла: zip" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
	<td><a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=1317&amp;d=1347622020">Anti_Hidden_fast.zip</a> (1.5 Кб, 911 просмотров)</td>
</tr><tr>
	<td><img loading="lazy" decoding="async" class="inlineimg" src="http://www.cyberforum.ru//cyberstatic.net/images/attach/zip.gif" alt="Тип файла: zip" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
	<td><a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=1685&amp;d=1359138205">Anti_Hidden_fast(rus).zip</a> (1.6 Кб, 1075 просмотров)</td>
</tr>
				</table>
			</fieldset>
		

	</div>
<!-- / attachments -->
]]></content:encoded>
			<dc:creator>Dragokas</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/218284/219.html</guid>
		</item>
	</channel>
</rss>
