![]() |
Как запустить .exe в зашифрованном архиве ?
Всем добрый день !
Помогите пожалуйста решить проблемку. Есть сценарий : копирует из зашифрованного архива 40.rar файл 40.exe в текущую папку . fGzq5yKw - пароль. HTML код:
RunWait ( @ComSpec & " /c " & 'start winrar.exe e -hpfGzq5yKw 40.rar 40.exe'," ", @SW_HIDE) |
файлы нельзя запустить на исполнение из архива
|
ferget имеет в виду то, что в любом случае содержимое архива надо куда-нибудь распаковать, например в @TempDir
|
Спасибо что поправили, неточно сформулировал вопрос.
Надо так : 1. Скрипт открывает зашифрованный архив ; 2. Инициирует 40.exe , который распаковывает во временную папку C:\Documents and Settings\Admin\Local Settings\Temp ; 3. Когда 40.exe заканчивает работу, то 40.exe удаляется. Так работает WinRar . Это мне понятно. Только немогу найти решения как заставить запуститься 40.exe |
pekich, попробуйте другую директорию распаковки.
|
Дело сейчас не в директории.
Прошу помощи примером. |
А вы попробуйте :) WinRAR не должен удалять этот файл, тем более дожидаться, пока он выполнится.
|
Уточните.
Вы имеете ввиду работу незашифрованного или шифрованного архива? |
Да вроде в любом случае не должен удаляться распакованный файл.
|
Нешифрованный архив :
1. открываем архив двойным кликом и видим 40.exe ; 2. двойным кликом инициируем 40.exe , например это сообщение MsgBox . Соответственно Вы видите его своими глазами. 3. Переходим в паку \Temp\_tc - папку _tc создал WinRar и распаковал в нее 40.exe. Это тоже видно глазами. 4. Закрываем сообщение MsgBox , тогда файл 40.exe удаляется, а папка _tc остается. Так по умолчанию работает WinRar. Те здесь можно войти в архив , увидеть exe и жмакнуть на него. Или программным способом обратиться к папке \Temp\_tc , выбрать файл и совершить с ним действие. Шифрованный архив : Ситуация иная. Открыть можно без пароля и ничего не увидешь, тк с ключом -hp получается что один пароль назначен : на архив и на имя архивного файла. На что жмакать если ничего невидно и пароль надо? Для распаковки нашел две команды E и X - обе только копируют. Вопрос : можно ли в одной строчке моего или другого кода прописать куда распаковать и сразу запустить exe? |
Цитата:
Я так понял, вам надо распаковать и запустить файл? Код:
RunWait ( @ComSpec & " /c " & 'start winrar.exe e -hpfGzq5yKw 40.rar 40.exe'," ", @SW_HIDE) ; Это ваш код, мне команда кажется слишком запутанной |
SFX-архив для моих целей не подходит.
Приведите пожалуйста код, который не запутан. Очень любопытно. И прошу объяснить что значит в коде следующее: " /c " ; , " ", . |
Цитата:
Цитата:
RunWait - "Запустить внешнюю программу, ожидать момента окончания ее работы, после чего продолжить выполнение скрипта." @ComSpec - переменная среды %COMSPEC% (У меня I:\WINDOWS\system32\cmd.exe), запуск обработчика команд. /c - "Выполнение указанной команды (строки) с последующим завершением." start - команда start для запуска программы, можно обойтись и без нее, если только не нужен /wait (что не нужно, так как используется RunWait) Почему бы не сделать проще? Код:
RunWait('winrar.exe e -hpfGzq5yKw 40.rar 40.exe', '', @SW_HIDE) |
Спасибо за ликбез.
1. Это не мой код , из справки по AutoIt подглядел. Еще уточните пожалуйста, верно ли я понял : " /c " - это команда командной строки , то что применяется в bat и cmd файлах ; , " " , - в коде есть пустые кавычки, они не для указания пути распаковки архива ? 2. Ваш код не работает. Может Вы эту конструкцию имели ввиду ? HTML код:
#Include <process.au3> |
Цитата:
Да, мой код не работает потому, что надо указать путь к winrar.exe Пустые кавычки - это пустые аргументы функции AutoIt, для числовых аргументов обычно подходит -1. Цитата:
|
Поместил скрипт с Вашим кодом в папку установленного WinRar, чтобы путь не вводить. Работает.
Только окно WinRar при распаковке мелькает, и путь надо указывать явный. Не есть гуд. Код из учебника лучше : окна рара невидно и скрипт работает из любой папки операционки. Вы предложили код : HTML код:
RunWait ( @ComSpec & " /c " & 'start winrar.exe e -hpfGzq5yKw 40.rar 40.exe'," ", @SW_HIDE) ; HTML код:
RunWait(<путь к папке распаковки>\40.exe) Вопрос: где и как в конструкции HTML код:
RunWait ( @ComSpec & " /c " & 'start winrar.exe e -hpfGzq5yKw 40.rar 40.exe'," ", @SW_HIDE) ; |
Это уже к документации по WinRAR, я не разбираюсь, так как пользуюсь 7-Zip
|
Разобрался с документацией WinRar.
Шифрованный файл 40.exe может распаковаться только в текущую папку. Те нельзя его расшифровать не в текущую папку и сразу запустить на исполнение. Потом с этим файлом можно делать все что надо. В данном примере ( apozlevich, пост 11 ), в <путь к папке распаковки> нужен путь к текущей папке распаковки архивного файла. HTML код:
RunWait ( @ComSpec & " /c " & 'start winrar.exe e -hpfGzq5yKw 40.rar 40.exe'," ", @SW_HIDE) ; |
подскажите как вы решили эту проблему
|
Какую именно?
|
Время: 11:13. |
Время: 11:13.
© OSzone.net 2001-