![]() |
Разархивирование файлов отдельной папки архива, через обращение к реестру
Здравствуйте, уважаемые форумчане. Будьте добры, подскажите как можно осуществить следующую операцию:
1. В реестре найти путь к WinRAR по ветке: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe /Path и запустить его 2. Открыть архив Pack.rar (который лежит в одной директории с bat-файлом), и выбрать в нем все файлы и подпапки расположенные в данном архиве по пути Extras\Controller\ 3. Распаковать их в папку "%UserProfile%\Documents\Extras\Control_1" В итоге должно получится выражение, наподобие следующего: Код:
"Запуск WinRAR через реестр" x "путь к файлам находящимся в определенной папке в архиве" "%UserProfile%\Documents\Extras\Control_1" |
Browning Zed, примерно так (путь искать не надо):
Код:
@echo off |
Благодарю Вас, Iska, это гениально. А не могли бы в двух словах объяснить, каким образом этот код находит WinRAR? То есть, с простым путём, типа C:\Program Files\WinRAR\WinRAR.exe - понятно. А тут как работает?
|
В двух — навряд ли. В большем же количестве — могу.
Никак не находит. В параметре App Paths хранятся имена исполняемых файлов и пути к ним, который может использовать функция ShellExecute(). Наша задача — лишь опосредованно вызвать её, что и делается посредством команды start. Примерно то же происходит, когда Вы последовательно делаете Win-R, winrar.exe, Enter. Просто в командной строке такой фокус не проделать — там просматривается только PATH (а вот в Far Manager'е можно — тамошний обработчик командной строки-запускатор задействует параметр App Paths [он, кстати, и себя туда добавляет]). Ссылки для чтения: В каких случаях при запуске программы не надо указывать полный путь к ней – Вадим Стеркин Application Registration | Microsoft Docs How the App Paths Registry Key Makes Windows Both Faster and Safer • Helge Klein |
Iska, спасибо за развернутый ответ. Пойду курить мануалы.
А можно ли посредством этого кода разархивировать файлы находящиеся в архиве в директории определяемые через реестр? 1-я ветка реестра (системная папка «Документы») Код:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders / "Personal" Код:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\bioware\mass effect / "path" |
Из письма в PM:
Цитата:
|
Цитата:
Код:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\bioware\mass effect / "path" Код:
@echo off |
Browning Zed, технически возможно. Возни много. Начиная с того, что надо сначала определить разрядность установленной ОС, и только в зависимости от этого лезть по тому или иному пути в реестр.
|
Iska, в моем случае, как мне кажется, реестр не будет иметь значения.
Собственно, для чего это нужно. Делаю модификацию для игры. Суть модификации - замена текстур со старых на новые (расположенных в директории приложения), а также замена файла конфигурации игры (находящемся в папке «Документы»), с измененными значениями, дабы эти текстуры в игре активировать. Никакие значения в реестре затрагиваться не будут. И делать инсталлятор для простых процедур распаковки и копипаста, как по мне, излишне. |
Цитата:
|
Цитата:
Iska, ну будьте добры, всего один пример, большего не прошу. (: |
Время: 17:52. |
Время: 17:52.
© OSzone.net 2001-