RegPathConverter - динамическое изменение пути к приложению в реестре.
$$$
До Н.Г.

RegPathConverter - динамическое изменение пути к приложению в реестре.

Опубликовано: 22-04-2014 22:36 Автор: MBTY Теги: Мои разработки
Что может быть общего у нерабочего Лаунчера Skyrim,
Skyrim Launcher (dzzb.ru)
Skyrim Launcher
Неприменяющегося патча Warcraft III,
Warcraft III patch (dzzb.ru)
Warcraft III patch
Ошибки запуска Red Alert 3,
Red Alert 3 (dzzb.ru)
Red Alert 3
Нерабочего Scanner,
scanner (dzzb.ru)
Scanner
И, скажем, нерабочей функции автозагрузки у часов AlfaClock Free Edition? (скрина нет :) )
Ответ: Неправильно прописан путь к приложению в реестре.
Да. Многие приложения (чаще игры) не могут нормально функционировать, если путь в реестре не сходится с действительностью (Игра лежит в C:\Games, а в реестре указано D:\Games) или его там просто нет. Чаще всего ключ, который за это отвечает несет имя "Installpath".
Когда он может теряться или запортиться?
1) Вы переустановили систему. Ключ в реестре исчез и игра перестала запускаться.
2) Вы скопировали игруху у друга, принесли домой и получили ту же ошибку - реестр-то вы у друга не взяли.
3) Купили на торрентах кривой репак. Вспомните описания к множеству игрух в сети "Все пути реестра сохранены" - это как-раз то, о чем я говорю.
Чтобы было окончательно всё понятно, приведу примеры к вышеописанным приложениям попорядку:
Лаунчер Skyrim будет работать наполовину (не увидит дополнений и не сохранит настройки), если у вас потерян ключ реестра: "Installed Path"
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Bethesda Softworks\Skyrim]
"Installed Path"="D:\\Program Files\\R.G. Mechanics\\Skyrim - Legendary Edition\\"
Патч Warcraft не применится, если потерян "InstallPath"
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III]
"InstallPath"="D:\\Games\\WarCraft III"
Red Alert 3 не стартанет без "Install Dir"
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Electronic Arts\Electronic Arts\Red Alert 3 Uprising]
"Language"="russian"
"Install Dir"="d:\\Program Files\\Electronic Arts\\Red Alert 3 Uprising\\"
Scаnner добавляет строку в контекстное меню дисков и папок, которое не сработает, если повреждены следующие ключи.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\Scan_Content]
@="Отобразить размеры через Scanner"
"Icon"="C:\\Scanner\\Scanner.exe"
[HKEY_CLASSES_ROOT\Directory\shell\Scan_Content\command]
@="C:\\Scanner\\Scanner.exe \"%1\"" <<<<ЭТОТ
[HKEY_CLASSES_ROOT\Drive\shell\Scan_Content]
@="Отобразить размеры через Scanner"
"Icon"="C:\\Scanner\\Scanner.exe"
[HKEY_CLASSES_ROOT\Drive\shell\Scan_Content\command]
@="C:\\Scanner\\Scanner.exe \"%1\"" <<<<И ЭТОТ
Многие приложения (для нас AlfaClock) вписывают себя в автозагрузку через реестр:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"AlfaClock Classic"="\"c:\\Program Files\\AlfaClock\\AlfaClock.exe\" /startup"
И так далее.
Решить проблему запуска любого приложения труда не составляет: Загуглил нужную ветку реестра для приложения, скачал файл в формате reg подправил пути блокнотом и применил. Потом имеет смысл держать этот файл в папке с приложением, на случай переустановки системы или перенесения самого приложения в другю папку. Обычному пользователю с таким приходится сталкиваться если ниразу, то пару раз в жизни. (Хотя в сети почти для каждой игры или приложения можно найти тему, где пользователи просят поделиться веткой реестра).
Другое дело, если вы клепаете установочные пакеты к приложениям, делаете репаки и так далее. Нужно пилить скрипты и изобретать костыли, чтобы путь к прижению прописывался в реестр всегда верно, в зависимости от того, куда пользователь установит ваше приложение. Самый простой способ написать cmd скрипт. Приведу пример для Варкрафта:
set "put=%cd:\=\\%" << скрипт определет путь и приписывает везде "\\". Заметили, что в реестре всегда путь указан через две косые черты?
echo Windows Registry Editor Version 5.00>%tmp%\tmpreg.reg << Присывается обязательная первая строка файла реестра во временный файл реестра, который и будет применен.
echo [HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III]>>%tmp%\tmpreg.reg << Вторая строка реестра. Без изменений.
echo "InstallPath"="%put%">>%tmp%\tmpreg.reg << Тут уже путь указан, как переменная. Будет указан скриптом при запуске.
reg import "%tmp%\tmpreg.reg" << Применение файла реестра
DEL /f /q "%tmp%\tmpreg.reg" << Удаление файла реестра.
Получается, что можно абсолютно любой файл реестра конвертировать в скриптовую форму и хранить его в папке с приложением, на всякий случай или вшить скрипт в Ваш установщик.
Ну и для своих собственных нужд был создан конвертер файла реестра в скрипт под названием RegPathConverter, работать с которым очень просто:
В левую часть закидываем (или копипастим) исходный реестр, ОБЯЗАТЕЛЬНО ВЫДЕЛЯЕМ ПУТЬ (выделенный кусок текста и будет заменен на динамическую переменную), конвертируем реестр в скрипт, сохраняем, применяем.
RegPathConverter(dzzb.ru)
RegPathConverter
Кнопка "1-2-3" Выполняет конвертирование,сохранение и применение скрипта одним шагом.
Скачать

Комментарии
5 - 3
 

    Жамкай
    Последние комментарии
    31 - следим за близкими :)24.09.2017 (20:20)
    DannyhEn : [b]sweetcarollinne chaturbate [/b] http://www.camersave.bid/film/shakirababy Maren and Aloura both...
    31 - следим за близкими :)24.09.2017 (15:35)
    LeonSott : Dynasty Medical Present has locations to serve you in: Aberdeen, Cary, Clayton, Clinton, Dunn, Fuqua...
    31 - следим за близкими :)24.09.2017 (15:22)
    Inesoa : Medicines are comfortable in the public, covert, and informal sectors in urban and exurban areas. Ge...
    31 - следим за близкими :)24.09.2017 (14:43)
    Pedarmed : Medicines in this category embrace antidepressant medicines , and other mental constitution medicine...
    31 - следим за близкими :)24.09.2017 (14:05)
    Darylei : As affectionately as a strictly monitored expansion process, medicines last to be carefully regulate...
    31 - следим за близкими :)24.09.2017 (13:41)
    Miloklal : At your marines, our proficient tandem join up purposefulness dress you with the supplies and facts ...
    31 - следим за близкими :)24.09.2017 (13:13)
    Flintpi : Generic medicines are reach-me-down more again on treatment because they are as effective as the que...
    ◘▲▼▲◘◘▲▼▲◘◘▲▼▲◘
    epn - партнерская программа крупнейшей в мире торговой площадки AliExpress.
    TCPHost new- дешевый быстрый хостинг с гибкой настройкой тарифа и отзывчивым саппортом.
    Links Ads new - сокращай ссылки и получай деньги (даже без сайта)
    DepositFiles new - один из самых честных и проверенных обменников
    ICQadvert new - 2500р./1к кликов vk-message.
    advmaker - смешанная ПП для жирных белых сайтов.
    Telderi new - лучшая в рунете биржа купли-продажи сайтов!
    Sape - древнейшая биржа покупки/продажи ссылок.
    GoGetLinks - первая и лучшая биржа вечных ссылок.
    Wizard-Banners - медиарич парнерка, от 80Р/1000 показов.
    Media Rich - гибкая медиарич/попандер партнерка.
    ГдеСлон - гибкая товарная парнерка.
    Seopult - биржа автоматического продвижения.
    Rookee - мощная альтернатива Сеопульту.
    Blogun - постовые и вечные ссылки.
    Webunder - правильный кликандер 100Р/1000 показов.
    Popunder - мощный, механизмы от пессимизации.
    Teasernet - старейшая надежная тизерная сеть.
    Ladycash - женские тизеры, высокие ставки клик от 2+РУБ.
    Alawar - продажа мини-игр от мастистого издателя.
    Fotocash - парнерка тамагочи/дейтинга, высокая конверсия.
    Avtoprogon - автоматический прогон по 7,652 каталогам.
    Runetki new - партнерка ведущего эротического видеочата!
    Admitad - старая, честная, гибкая PPA.