Что такое Hash в 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, который можно применить к другой машине, чтобы установить это предпочтение?

Ответ 1

Microsoft решила в Windows 8 (возможно, по соображениям безопасности), что пользователи должны иметь возможность устанавливать программы по умолчанию только через встроенный графический интерфейс. То есть по дизайну, вы не должны иметь возможность устанавливать обработчики по умолчанию в script или программно.

Значение Hash используется для подтверждения того, что значение UserChoice ProgId было установлено пользователем, а не каким-либо другим способом. Это работает до тех пор, пока Microsoft сохраняет алгоритм, который генерирует Hash, и механизм проверки ProgId с помощью Hash, секрет.

В теории вы могли бы выяснить секрет установки Hash (и, возможно, других скрытых настроек ОС), но у вас не было бы гарантии надежности; например, следующий Windows Update может нарушить ваш метод. Вероятно, вам просто нужно адаптироваться к изменениям и жить с использованием новых методов, встроенных Microsoft в ОС.