Я не уверен, следует ли мне задавать этот вопрос в Serverfault или Stackoverflow.
Я разрабатываю сценарий (так что жмите start->search
'не вариант) и попробуйте узнать способ найти, где было установлено приложение.
У меня уже есть SID приложения. Посмотрел на
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
и
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders
но для этого приложения это не помогло.
Проползая по всему реестру, я нашел такой путь:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\0019F09C4327ED11A893800002C0A966
Может ли кто-нибудь объяснить, как 0019F09C4327ED11A893800002C0A966
рассчитать, если я не знаю заранее?
Я заметил, что имя ключа здесь - это смешанный идентификатор безопасности приложения:
key 0E0D0A87 6588 CF44 08ED 156E22CA84C6
sid 78A0D0E0-8856-44FC-80DE-51E622AC486C
поэтому я попытался найти прямые и обратные номера путей, просто 0019F09C и обратный, но безуспешно.
В этом вопросе приложение представляет собой PHP, но решение должно работать для любого приложения, созданного в соответствии с правилами MS (то есть не просто распаковать себя куда-нибудь, а добавить правильный данные в реестр. Надеюсь, PHP умеет).
upd: снимок экрана с ответом Эвана Андерсона
Вы смотрите на приложение, управляемое установщиком Windows. Установка идентифицируется глобально уникальным идентификатором (GUID, который вы называете «SID»). Этот GUID используется в названии мест в реестре, где хранится информация об установке. Разница во внешнем виде GUID в одном месте по сравнению с другим заключается в том, что GUID хранится в некоторых местах в «упакованном» формате, а в других местах - в «распакованном». (Вот некоторая предыстория и код для упаковки / распаковки GUID: http://www.dwarfsoft.com/blog/2010/06/22/msi-package-code-fun/)
Параметры, которые были указаны во время установки пакета, при условии, что он был установлен для каждой машины, будут расположены в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\0019F09C4327ED11A893800002C0A966\InstallProperties
.
В частности, InstallLocation
ценность - это то, что вы ищете. Это значение жестяная банка содержат каталог, который был выбран для установки, но для обновления этого значения не требуется установочный пакет.
Кроме того, вы можете найти все файлы, связанные с установочным пакетом, заменив упакованный GUID пакета в следующей команде:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components" /s | find "PACKED_GUID_HERE"
Это будет работать с любым установочным пакетом, но может дать вам очень длинный подробный список файлов.