Вверх ↑
Этот топик читают: Гость
Ответов: 64
Рейтинг: 15
#1: 2012-01-24 21:15:41 ЛС | профиль | цитата
Утилита запускает streams.exe с параметром -d
Для разблокирования загруженных EXE файлов

Есть пакетная обработка
Отправить, или переместить в окно streams-d EXE файлы (или папку), программа сама найдёт файлы EXE и обработает их.

Первый запуск, поиск streams.dll в папке запуска, если не находит распаковывает его.
Есть возможность создания (и удаления) ярлыка в пункте "Отправить"
Утилита использует программу streams.exe, автор Mark Russinovich.

Скачать схему
Скачать exe

п.с. Понимаю можно сразу настроить политики безопасности, что бы exe файлы не блокировались, но если уже много скачено, а искать в ручную долго, достаточно просто сделать пакетную обработку.
п.с.с. Хотя кто знает легкое решение, буду рад если поделитесь.
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 294
Рейтинг: 64
#2: 2012-01-24 22:36:08 ЛС | профиль | цитата
Насколько я понимаю, инфа пишется в "альтернативный поток".
Была тема, где foksov предлагал вариант работы с этим без использования доп. утилит (но с IC).
Собственно ссылка на тему, если любопытно:
http://forum.hiasm.com/forum.html?q=3&p=181106
карма: 0

0
Ответов: 1535
Рейтинг: 176
#3: 2012-01-25 09:16:51 ЛС | профиль | цитата
sintet, правила данного раздела тем ты, конечно, не читал (неразбериха), а жаль. В схеме используешь элементы, которые можно просто удалить и при этом ничего не изменится. Попробуй пересмотреть, оптимизировать и таким образом облегчить схему, тебе это будет только полезно.

карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 64
Рейтинг: 15
#4: 2012-01-25 11:25:52 ЛС | профиль | цитата
ser_davkin
правила данного раздела тем ты, конечно, не читал

Почему же конечно , вообще то читал.
неразбериха

Схема не большая, разобраться легко, если есть вопросы задавайте.
В схеме используешь элементы, которые можно просто удалить и при этом ничего не изменится.

Все элементы задействованы, просто удалить (без потери функционала) вряд ли получится, заменить возможно. А визуальные элементы, это уже кому как удобно.
В схеме используется один не стандартный элемент OneCopyProgram, он запрещает запуск программы более одной копии.
Попробуй пересмотреть, оптимизировать и таким образом облегчить схему, тебе это будет только полезно.

Согласен моя схема далека от идеала. Хоть программа и работает, но некоторые решения можно реализовать проще и быстрее. По вашему, что и как в схеме можно упростить? Если отпишете конкретно, это будет полезно не только мне, но и другим.
карма: 0

0
Ответов: 273
Рейтинг: 29
#5: 2012-01-25 15:05:42 ЛС | профиль | цитата
sintet писал(а):
Все элементы задействованы, просто удалить (без потери функционала) вряд ли получится, заменить возможно. А визуальные элементы, это уже кому как удобно.
В схеме используется один не стандартный элемент OneCopyProgram, он запрещает запуск программы более одной копии.
Действительно много лишнего.
Нестандартные элементы лучше не использовать. Для блокировки двойного запуска можно использовать стандартный mutex.
Таймеры в качестве промежуточных звеньев лучше не использовать. Можно получше проработать логику работы, тогда они не понадобятся.
Дели схему на функциональные части и упаковывай их в MultiElement'ы.

Зачем там ярлыки? Что они делают?
В схеме почему-то разьехался весь интерфейс в редакторе форм. Или он такой и задуман?

Предлагаю взглянуть на такую обработку списка файлов.
code_26643.txt(кстати, кто что по этому поводу скажет? Может есть путь поинтереснее?)
Работает просто:
Заполняет список файлами, и начинает по очереди выдавать их в поток.
После обработки файла, он удаляется из списка.
Во время обработки можно продолжать наполнять список.

Если нужно парсить папки, тогда, как ты это уже делал, перед добавлением файла в список, проверяй его тип, и если это папка - рекурсивно сканируй ее, добавляя все найденные файлы в список.
Если опасаешься двух копий программы в памяти, тогда после старта первым делом проверяй mutex, и лишь после - наличие streams.exe

карма: 0

0
файлы: 1code_26643.txt [2.6KB] [466]
Ответов: 64
Рейтинг: 15
#6: 2012-01-25 17:12:32 ЛС | профиль | цитата
tomas
Для блокировки двойного запуска можно использовать стандартный mutex.

Спасибо работает, не знал про этот компонент, принцип действия такой же, плюс дополнительные возможности.
Таймеры в качестве промежуточных звеньев лучше не использовать.

Что же в этом плохого?
Таймер есть, а использовать его не желательно .
Там от силы замедление в 600-700мс. Может просто есть какие то другое решение, синхронизировать файловые операции с программными? Если для это придётся делать дополнительные опросы и вычисления, так лучше пусть таймер стоит.
Дели схему на функциональные части и упаковывай их в MultiElement'ы.

Схема пустяковая, лишние мултиэлементы замедляют программу.
Зачем там ярлыки? Что они делают?

Ярлык добавляется в пункт "Отправить", правый клик по файлу или папке. Он создаётся (или удаляется) по желанию пользователя. Конечно можно было реализовать через реестр, привязку к расширению exe и папкам.
В схеме почему-то разьехался весь интерфейс в редакторе форм. Или он такой и задуман?

Он не разъехался, просто частично что то под чем то скрыто, понимаю проще использовать панели и скрывать их, в планах вообще интерфейса не было, а потом... не так много элементов что бы для них отдельные панели выделять.
Предлагаю взглянуть на такую обработку списка файлов.
code_26643.txt(кстати, кто что по этому поводу скажет? Может есть путь поинтереснее?)
Работает просто:
Заполняет список файлами, и начинает по очереди выдавать их в поток.
После обработки файла, он удаляется из списка.
Во время обработки можно продолжать наполнять список.

Тоже была идея список использовать, это скорее дело вкуса и удобства.
Можно ещё в место удаления строки из списка, что бы строка отмечалась, или хотя бы перемещались в другой список. Файлы по размеру разные и что то будет мелькать не заметно, а для тех кто хочет проследить визуально полный процесс обработки, это не удобно.
Мне хватает отследить количество найденных файлов, обработанных и в очереди, можно ещё добавить выключение компьютера после обработки .
Если нужно парсить папки, тогда, как ты это уже делал, перед добавлением файла в список, проверяй его тип, и если это папка - рекурсивно сканируй ее, добавляя все найденные файлы в список.
Если опасаешься двух копий программы в памяти, тогда после старта первым делом проверяй mutex, и лишь после - наличие streams.exe

Так это и работает.

В общем, если что то в схеме не понятно, то задавайте вопросы.
Утилиту использовал разово, с поставленной задачей справляется.
Схему и exe перезалил
изменения:
- добавил компонент Mutex (удалил не стандартный компонент)
- возможность добавлять задания в процессе обработки, перетаскивать в окно утилиты, в принципе там эта возможность была, просто счетчик не корректно отображал число файлов в очереди.
карма: 0

0
Ответов: 273
Рейтинг: 29
#7: 2012-01-25 17:32:31 ЛС | профиль | цитата
sintet писал(а):
Схема пустяковая, лишние мултиэлементы замедляют программу.
Не замедлит. И будет проще разобраться. Гарантирую это.
sintet писал(а):
Там от силы замедление в 600-700мс. Может просто есть какие то другое решение, синхронизировать файловые операции с программными? Если для это придётся делать дополнительные опросы и вычисления, так лучше пусть таймер стоит.
Ну вот возьмем запуск streams.exe
Ты стартуешь его, и включаешь таймер. И так на каждый файл по 700мс.

А можно поставить в winexec ожидание завершения, и выкинуть таймер. Как разблокировка закончится, управление сразу перейдет на следующую ветвь хаба. Это сэкономит несколько сотен мс.

Есть еще вариант - если можно запустить несколько разблокировщиков параллельно, тогда стоит этим воспользоваться. Ставим асинхронный режим и быстренько прогоняем через winexec весь список - разблокировка пойдет в несколько потоков (даже в десятки потоков).
Если система не справится с такой нагрузкой - ограничить количество потоков в секунду, счетчиком или паузами в 10-100мс.

Еще продуктивнее - если streams.exe имеет опции для пакетной обработки файлов. Но скорее всего это не так, верно?
Хотя нет. Все-таки кое-какие имеет. Ключ S позволяет рекурсивную обработку директорий. Также поддерживаются знаки подстановки.
Можно добавить проверку: если добавляем директорию - не сканировать ее, а пометить. При обработке списка, при встрече строки, помеченной как директория, передавать ее приложению с ключом S - это значительно ускорит обработку, т.к. не будет уходить время на старт/стоп процесса.
карма: 0

0
Ответов: 64
Рейтинг: 15
#8: 2012-01-26 08:44:29 ЛС | профиль | цитата
tomas писал(а):
Ну вот возьмем запуск streams.exe
Ты стартуешь его, и включаешь таймер. И так на каждый файл по 700мс.

А можно поставить в winexec ожидание завершения, и выкинуть таймер. Как разблокировка закончится, управление сразу перейдет на следующую ветвь хаба. Это сэкономит несколько сотен мс.

Действительно так быстрее получается, спасибо.
tomas писал(а):

Еще продуктивнее - если streams.exe имеет опции для пакетной обработки файлов. Но скорее всего это не так, верно?
Хотя нет. Все-таки кое-какие имеет. Ключ S позволяет рекурсивную обработку директорий. Также поддерживаются знаки подстановки.
Можно добавить проверку: если добавляем директорию - не сканировать ее, а пометить. При обработке списка, при встрече строки, помеченной как директория, передавать ее приложению с ключом S - это значительно ускорит обработку, т.к. не будет уходить время на старт/стоп процесса.

Тут такое дело, не получается включить обратно в политике безопасности блокировку скаченных EXE файлов, настройки возвращаю в исходное состояние (с перезагрузкой пк), но новые скаченные файлы все равно не блокируются. Так что проверить работу streams.exe с параметром -s не могу.

Обновили ссылки

карма: 0

0
Ответов: 273
Рейтинг: 29
#9: 2012-01-26 13:16:30 ЛС | профиль | цитата
Не забывай про второй вариант - выключить ожидание завершения, ничего не трогая в твоей текущей схеме (та, что без таймера). Тогда вся логика в один момент окончит работу, перебрав весь список. А нагрузка по запуску десятков процессов streams ляжет на ОС.
Другое дело, потянет ли это ОС, и может ли streams работать одновременно со своими копиями? Проверь это.
В случае успеха ускорение будет еще больше. И автоматом будут использоваться преимущества многоядерности, если они есть.

sintet писал(а):
Тут такое дело, не получается включить обратно в политике безопасности блокировку скаченных EXE файлов, настройки возвращаю в исходное состояние (с перезагрузкой пк), но новые скаченные файлы все равно не блокируются. Так что проверить работу streams.exe с параметром -s не могу.
Ну с этим я могу тебе помочь
Есть два пути:

Восстановить политику безопасности. А для этого, судя по всему, нужно вернуть переключатели "уровень риска" и "не сохранять сведения" в положение "не задан". Они находятся по пути win+r > gpedit.msc > конфигурация пользователя > административные шаблоны > компоненты windows > диспетчер вложений. Кстати, у меня там все переключатели в положении "не задан"

Или же поступить проще. Т.к. информация содержится в потоке, то можно просто создать свой поток в подопытных файлах. Приложение его также уничтожит, что можно контролировать, прочитав этот поток.
Создание потока в cmd: echo data > file:stream
Чтение: more < file:stream

Например так:
echo abcdefg > daemon.exe:mystream
more < daemon.exe:mystream

Чтобы не вводить вручную для каждого файла, можно добавлять и читать потоки автоматически.
setstreams.bat
@echo off
for /r %%f in (*.*) do echo abcdefg > %%f:mystream
echo Start programm Streams-D and press any key for contini
pause
echo .
for /r %%f in (*.*) do echo %%f & more < %%f:mystream & echo .
echo press any key for exit
pause
exit
Складываешь файлы и папки в какую-нибудь папку, кидаешь туда файл setstreams.bat, запускаешь его, запускаешь streams-d и обрабатываешь файлы из этой папки, нажимаешь любую клавишу в окне setstreams.bat и он выводит список файлов (рекурсивно). Если под именем файла написано abcdefg - поток остался цел, и streams-d не отработала.
Если написано, что файл не найден - поток уничтожен, и streams-d отработала удачно.
Хотя тебе этот список не нужен, и достаточно только первой половины батника - той, что пишет в потоки.

Ps.
Это получается, что лично тебе, по крайней мере до переустановки, эта программа больше не нужна, а значит и нет мотива продолжать совершенствовать ее? Или продолжаешь ее пытать в качестве снаряда для обучения?
карма: 0

0
Ответов: 64
Рейтинг: 15
#10: 2012-01-26 22:23:59 ЛС | профиль | цитата
tomas писал(а):
Восстановить политику безопасности. А для этого, судя по всему,
нужно вернуть переключатели "уровень риска" и "не сохранять сведения" в положение
"не задан". Они находятся по пути win+r > gpedit.msc > конфигурация пользователя
> административные шаблоны > компоненты windows > диспетчер вложений. Кстати, у
меня там все переключатели в положении "не задан"

Так и делал. И повышенный уровень безопасности IE не изменил ситуацию.
карма: 0

0
Ответов: 273
Рейтинг: 29
#11: 2012-01-26 23:40:37 ЛС | профиль | цитата
sintet писал(а):
Так и делал. И повышенный уровень безопасности IE не изменил ситуацию.
Значит добавляй свои потоки - воспользуйся батником.
карма: 0

0
Ответов: 64
Рейтинг: 15
#12: 2012-01-26 23:42:39 ЛС | профиль | цитата
tomas
Тоже сделал, безрезультатно.

Если у вас получается, скиньте заблокированный EXE.
Вы запускали streams-d.exe, в работе его проверяли?
карма: 0

0
Ответов: 273
Рейтинг: 29
#13: 2012-01-26 23:47:54 ЛС | профиль | цитата
sintet писал(а):
Тоже сделал, безрезультатно.
В смысле? Что безрезультатно?
Потоки не появляются? Или не исчезают?
Или не работает многопоточная обработка?
Или не работает режим S?

Зы.
Этот батник не выполняет блокировку файлов!
Он создает новые потоки в файлах, и проверяет, уничтожены ли они.
Если не уничтожены - программа не отработала.

карма: 0

0
Ответов: 64
Рейтинг: 15
#14: 2012-01-26 23:53:56 ЛС | профиль | цитата
tomas писал(а):
В смысле? Что безрезультатно?

А какой результат должен быть?
tomas писал(а):
Потоки не появляются? Или не исчезают?

Как это проверить?
Файлы не заблокированы, мне нужен подопытный заблокированный EXE.
tomas писал(а):
Или не работает многопоточная обработка?
Или не работает режим S?

Не могу проверить без заблокированного EXE.

tomas писал(а):
Зы.
Этот батник не выполняет блокировку файлов!
Он создает новые потоки в файлах, и проверяет, уничтожены ли они.
Если не уничтожены - программа не отработала.

И где эти потоки можно узреть, и как он (батник) сообщает свою проверку?
Видимо потоков нету что бы проследить работоспособность.
карма: 0

0
Ответов: 273
Рейтинг: 29
#15: 2012-01-26 23:59:30 ЛС | профиль | цитата
Еще раз повторяю - не можешь заблокировать, и не надо.
Блокировка - это поток в файле.
Если его нельзя создать, то можно создать другой поток - свой.
А чтоб проверить работу, после обработки этот поток нужно прочитать - что и делает батник.
Он ищет рекурсивно все файлы в текущей папке и всех подпапках и добавляет к ним свой поток. Потом запрашивает старт streams-d, а после окончания его работы предлагает нажать любую клавишу и выводит список файлов с их потоками.
Там, где пишет "файл не найден" - значит этот файл обработан успешно и потока в нем больше нет (а значит в реале с него была бы снята блокировка).
Вот и все.
------------ Дoбавленo в 23.59:
На тебе заблокированный файл.
Расклонируй его и тестируй.
Устанавливать не рекомендую - хз че это. С год валяется в файлопомойке. Выбрал потому, что меньше остальных.
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)