Ответ 1
Microsoft решила в Windows 8 (возможно, по соображениям безопасности), что пользователи должны иметь возможность устанавливать программы по умолчанию только через встроенный графический интерфейс. То есть по дизайну, вы не должны иметь возможность устанавливать обработчики по умолчанию в script или программно.
Значение Hash используется для подтверждения того, что значение UserChoice ProgId было установлено пользователем, а не каким-либо другим способом. Это работает до тех пор, пока Microsoft сохраняет алгоритм, который генерирует Hash, и механизм проверки ProgId с помощью Hash, секрет.
В теории вы могли бы выяснить секрет установки Hash (и, возможно, других скрытых настроек ОС), но у вас не было бы гарантии надежности; например, следующий Windows Update может нарушить ваш метод. Вероятно, вам просто нужно адаптироваться к изменениям и жить с использованием новых методов, встроенных Microsoft в ОС.