1

Тема: AHK: Получение значения данных о установленном ПО из реестра.

Задача вроде бы простая, но я не знаю как её решить, точнее какой функцией из набора AHK.
1. Есть установленная программа, скажем sasa.exe
2. Есть AHK
3. Нужно получить путь к данной программе.

Подскажите как это сделать по проще с учётом что программа может находиться где угодно, но она установлена (100%)

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

2

Re: AHK: Получение значения данных о установленном ПО из реестра.

Indomito пишет:

Задача вроде бы простая, но я не знаю как её решить, точнее какой функцией из набора AHK.
1. Есть установленная программа, скажем sasa.exe
2. Есть AHK
3. Нужно получить путь к данной программе.

Подскажите как это сделать по проще с учётом что программа может находиться где угодно, но она установлена (100%)

Программа не обязана записывать в реестр своё расположение. Обычно программа создаёт ключи/разделы в разделе "HKEY_LOCAL_MACHINE\SOFTWARE\"(программа установлена для всех пользователей) или в "HKEY_CURRENT_USER\Software\". Ещё можно глянуть в разделы "HKEY_*\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", там обычно указан путь(это сведения для деинсталяции). Кроме того, если программа используется для открытия каких-либо типов файлов или ссылок, или присутствует в контекстном меню проводника- то они тоже в соответствующих разделах указываются.

3 (изменено: Indomito, 2012-07-17 23:34:23)

Re: AHK: Получение значения данных о установленном ПО из реестра.

Как я понимаю (прошу прощения но я Windows плохо знаю) нельзя однозначно определить ключ?
А нельзя ли средствами AHK выполнить рекурсивный поиск или просто расширенный поиск по конкретным значениям, ведь скажем деинсталяторы однозначно находят что надо удалить или я не прав?

ADD
Да, это игра и она только запускается и не более, проблема в инсталляции скрипта. Сейчас в ini-файле скрипта требуется указать рабочую папку игры, но это не удобно... сам часто ошибаюсь.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

4 (изменено: Indomito, 2012-07-17 23:49:09)

Re: AHK: Получение значения данных о установленном ПО из реестра.

поглядел в деинсталятор и скопировал

Раздел:          HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{48A4F2A0-0B66-4484-B94E-5DD39C8D07EE}_is1
Название класса:        <Класс отсутствует>
Последнее время записи:   03.07.2012 - 7:24
Параметр 0
  Название:            Inno Setup: Setup Version
  Тип:            REG_SZ
  Значение:            5.4.3.ee1 (a)

Параметр 1
  Название:            Inno Setup: App Path
  Тип:            REG_SZ
  Значение:            C:\Program Files (x86)\Skyrim

.................. и т.д.

как правильно записать функцию AHK что бы получить путь Параметр 1
Поиск можно производить по двум параметрам

Параметр 8
  Название:            DisplayName
  Тип:            REG_SZ
  Значение:            Skyrim v.1.5.26.0.5

Параметр 12
  Название:            Publisher
  Тип:            REG_SZ
  Значение:            Bethesda Softworks

P.S. Как я понимаю ключ {48A4F2A0-0B66-4484-B94E-5DD39C8D07EE}_is1 может быть разный для разных ОС и машин - я просто интуитивно.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

5

Re: AHK: Получение значения данных о установленном ПО из реестра.

Работа с реестром описана в справке на этом сайте(раздел "управление реестром"). Но я думаю можно обойтись и без перебора, в разделе "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\" должна быть ветка типа "Skyrim", "The Elder Scrolls" или "Bethesda Softworks" с нужной информацией.

6

Re: AHK: Получение значения данных о установленном ПО из реестра.

проблема в том что надо искать и ХР - вот я и думаю как бы задать команду на поиск и самому не мучатся. Получается что искать надо начиная с ветки "HKEY_LOCAL_MACHINE\SOFTWARE\" осталось только определить по какому ключу.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

7

Re: AHK: Получение значения данных о установленном ПО из реестра.

Indomito пишет:

проблема в том что надо искать и ХР - вот я и думаю как бы задать команду на поиск и самому не мучатся. Получается что искать надо начиная с ветки "HKEY_LOCAL_MACHINE\SOFTWARE\" осталось только определить по какому ключу.

От версии ядра ничего не зависит. Просто в 64-битной системе, по умолчанию, все запросы 32-битных приложений к "HKEY_LOCAL_MACHINE\SOFTWARE\*" перенаправляются в "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\*"

8 (изменено: Indomito, 2012-07-19 04:45:44)

Re: AHK: Получение значения данных о установленном ПО из реестра.

Ясно, учту, но видимо придётся использовать для первичного поиска Loop, RootKey [, Key, IncludeSubkeys?, Recurse?], а для уточнения RegRead, OutputVar, RootKey, SubKey [, ValueName] - я не вижу пока другого решения.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

9

Re: AHK: Получение значения данных о установленном ПО из реестра.

Александр_ задачу решил намного проще, т.е. как ты и говорил

#Persistent
#SingleInstance
;------------------------------------------
; Set var Game_WorkingDir_Var is to ; RegEdit (x86/x64)
; KEY+subKEY  = HKEY_LOCAL_MACHINE\SOFTWARE\Bethesda Softworks\Skyrim
; Name = Installed Path
; read -> Game_WorkingDir_Var
; TEST!!!! -> uses RegRead, OutputVar, RootKey, SubKey [, ValueName]
; Check work on pirated versions and licensed versions (all versions from 1.4 to 1.6)
RegRead, Game_WorkingDir_Var, HKEY_LOCAL_MACHINE, SOFTWARE\Bethesda Softworks\Skyrim , Installed Path
msgbox, % Game_WorkingDir_Var
ExitApp
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

10

Re: AHK: Получение значения данных о установленном ПО из реестра.

Рано радовался - между пираткой и лицензией много разного...
Можно как то искать по маске? Или хоть как то определить рабочую папку установленной программы?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro