Что такое хэш в HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \.<Расширение>\ UserChoice?
В Windows 8 выбор пользователя, для которого следует открыть приложение для данного типа документа, по-видимому, сохраняется в
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\<extension>\UserChoice
Для PDF-файлов на моей машине это содержит:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoice]
"Hash"="xh8KhPWlZL0="
"ProgId"="AcroExch.Document"
Еще на другой машине хеш другой. Что хэшируется, и есть ли способ создать файл.reg, который можно применить к другому компьютеру для установки этого предпочтения?
4 ответа
Кто-то пересмотрел хэш и написал инструмент CLI для установки ассоциаций файлов:
extension = “.txt”; the file extension
sid = “S-1-5-21-463486358-3398762107-1964875780-1001” ; the SID of the current user
progid = “txtfile”; the ProgId of the desired association
regdate = “01d3442a29887400”; timestamp of the UserChoice registry key
experience = “a microsoft secret string”; a static string (this is a dummy example, not the real string
hash = Base64(MicrosoftHash(MD5(toLower(extension, sid, progid, regdate, experience))))
Не все детали раскрыты, но, вероятно, достаточно, чтобы перепроектировать остальные.
Microsoft решила в Windows 8 (вероятно, из соображений безопасности), что пользователи должны иметь возможность устанавливать программы по умолчанию только через встроенный графический интерфейс. Т.е. по замыслу вы не должны устанавливать обработчики по умолчанию в скрипте или программно.
Значение Hash используется для доказательства того, что значение ProgId UserChoice было задано пользователем, а не каким-либо другим способом. Это работает, пока Microsoft хранит алгоритм, который генерирует Hash, и механизм проверки ProgId с использованием Hash, секрета.
Теоретически вы можете выяснить секрет установки хэша (и, возможно, других скрытых настроек ОС), но у вас не будет гарантии его надежности; например, следующее обновление Windows может нарушить ваш метод. Возможно, вам просто нужно адаптироваться к изменениям и жить с использованием новых методов, встроенных в ОС Microsoft.
Между прочим, эти хэши выбора пользователя в профиле становятся недействительными после sysprep, вызывая все эти сообщения "приложение по умолчанию было сброшено" во время первого входа в систему после sysprep и множество записей журнала в Microsoft-Windows-Shell-Core/AppDefaults.
Существует обратная инженерная работа здесь .
Вот основной алгоритм: