Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Как запустить .exe в зашифрованном архиве ? (http://forum.oszone.net/showthread.php?t=225207)

pekich 14-01-2012 10:55 1835501

Как запустить .exe в зашифрованном архиве ?
 
Всем добрый день !

Помогите пожалуйста решить проблемку.

Есть сценарий :
копирует из зашифрованного архива 40.rar файл 40.exe в текущую папку . fGzq5yKw - пароль.

HTML код:

RunWait ( @ComSpec & " /c " & 'start winrar.exe e -hpfGzq5yKw 40.rar 40.exe'," ", @SW_HIDE)
Как запустить файл 40.exe на исполнение прямо в зашифрованном архиве, те без копирования?

ferget 14-01-2012 11:59 1835536

файлы нельзя запустить на исполнение из архива

apozlevich 14-01-2012 12:44 1835562

ferget имеет в виду то, что в любом случае содержимое архива надо куда-нибудь распаковать, например в @TempDir

pekich 14-01-2012 13:47 1835600

Спасибо что поправили, неточно сформулировал вопрос.

Надо так :
1. Скрипт открывает зашифрованный архив ;

2. Инициирует 40.exe , который распаковывает во временную папку
C:\Documents and Settings\Admin\Local Settings\Temp ;

3. Когда 40.exe заканчивает работу, то 40.exe удаляется.

Так работает WinRar . Это мне понятно.

Только немогу найти решения как заставить запуститься 40.exe

apozlevich 14-01-2012 13:49 1835601

pekich, попробуйте другую директорию распаковки.

pekich 14-01-2012 14:01 1835605

Дело сейчас не в директории.

Прошу помощи примером.

apozlevich 14-01-2012 14:03 1835607

А вы попробуйте :) WinRAR не должен удалять этот файл, тем более дожидаться, пока он выполнится.

pekich 14-01-2012 14:14 1835620

Уточните.
Вы имеете ввиду работу незашифрованного или шифрованного архива?

apozlevich 14-01-2012 14:16 1835624

Да вроде в любом случае не должен удаляться распакованный файл.

pekich 14-01-2012 14:59 1835667

Нешифрованный архив :
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?

apozlevich 14-01-2012 15:06 1835672

Цитата:

Цитата pekich
Нешифрованный архив :
1. открываем архив двойным кликом и видим 40.exe ;
2. двойным кликом инициируем 40.exe , например это сообщение MsgBox .
Соответственно Вы видите его своими глазами.
3. Переходим в паку \Temp\_tc - папку _tc создал WinRar и распаковал в нее 40.exe.
Это тоже видно глазами.
4. Закрываем сообщение MsgBox , тогда файл 40.exe удаляется, а папка _tc остается. »

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

Я так понял, вам надо распаковать и запустить файл?
Код:

RunWait ( @ComSpec & " /c " & 'start winrar.exe e -hpfGzq5yKw 40.rar 40.exe'," ", @SW_HIDE) ; Это ваш код, мне команда кажется слишком запутанной
RunWait(<путь к папке распаковки>\40.exe)

А можно просто сделать SFX-архив, который это будет делать сам.

pekich 14-01-2012 15:14 1835680

SFX-архив для моих целей не подходит.
Приведите пожалуйста код, который не запутан. Очень любопытно.
И прошу объяснить что значит в коде следующее:
" /c " ; , " ", .

apozlevich 14-01-2012 15:23 1835694

Цитата:

Цитата pekich
SFX-архив для моих целей не подходит. »

SFX архив как раз умеет разархивировать и запускать. То что вы делаете, будет работать только на системах с установленным WinRAR.

Цитата:

Цитата pekich
И прошу объяснить что значит в коде следующее:
" /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)

pekich 14-01-2012 15:43 1835707

Спасибо за ликбез.
1.
Это не мой код , из справки по AutoIt подглядел.
Еще уточните пожалуйста, верно ли я понял :
" /c " - это команда командной строки , то что применяется в bat и cmd файлах ;

, " " , - в коде есть пустые кавычки, они не для указания пути распаковки архива ?

2.
Ваш код не работает.
Может Вы эту конструкцию имели ввиду ?

HTML код:

#Include <process.au3>
_RunDOS( $sCommand )


apozlevich 14-01-2012 15:45 1835710

Цитата:

Цитата pekich
" /c " - это команда командной строки , то что применяется в bat и cmd файлах ; »

Да, это аргумент для cmd.

Да, мой код не работает потому, что надо указать путь к winrar.exe

Пустые кавычки - это пустые аргументы функции AutoIt, для числовых аргументов обычно подходит -1.

Цитата:

Цитата pekich
Спасибо за ликбез. »

Снизу всех сообщений снизу есть кнопка "Полезное сообщение"

pekich 14-01-2012 16:15 1835726

Поместил скрипт с Вашим кодом в папку установленного WinRar, чтобы путь не вводить. Работает.
Только окно WinRar при распаковке мелькает, и путь надо указывать явный. Не есть гуд.

Код из учебника лучше : окна рара невидно и скрипт работает из любой папки операционки.

Вы предложили код :

HTML код:

RunWait ( @ComSpec & " /c " & 'start winrar.exe e -hpfGzq5yKw 40.rar 40.exe'," ", @SW_HIDE) ;
RunWait(<путь к папке распаковки>\40.exe)

Но прежде чем выполнить
HTML код:

RunWait(<путь к папке распаковки>\40.exe)
Надо знать путь, куда был распакован 40.exe.

Вопрос: где и как в конструкции
HTML код:

RunWait ( @ComSpec & " /c " & 'start winrar.exe e -hpfGzq5yKw 40.rar 40.exe'," ", @SW_HIDE) ;
прописать путь к папке распаковки ?

apozlevich 14-01-2012 16:17 1835730

Это уже к документации по WinRAR, я не разбираюсь, так как пользуюсь 7-Zip

pekich 16-01-2012 12:12 1836984

Разобрался с документацией WinRar.
Шифрованный файл 40.exe может распаковаться только в текущую папку.
Те нельзя его расшифровать не в текущую папку и сразу запустить на исполнение.
Потом с этим файлом можно делать все что надо.

В данном примере ( apozlevich, пост 11 ), в <путь к папке распаковки> нужен путь к текущей папке распаковки архивного файла.

HTML код:

RunWait ( @ComSpec & " /c " & 'start winrar.exe e -hpfGzq5yKw 40.rar 40.exe'," ", @SW_HIDE) ;
RunWait(<путь к папке распаковки>\40.exe)

Спасибо. Тема решена.

Turbo999 24-12-2021 11:32 2975971

подскажите как вы решили эту проблему

Iska 25-12-2021 02:15 2975994

Какую именно?


Время: 11:13.

Время: 11:13.
© OSzone.net 2001-