Cambiar programa predeterminado asociado a una extensión Windows 10 UserChoice Hash método interno

📢 SFTA.exe Ultima Actualización 2019-08-13

Recientemente uno de mis clientes me ha solicitado cambiar el programa predeterminado asociación a una extensión de archivo .pdf con Acrobat Reader DC en Windows 10, todo de manera automática, Lo primero que viene a mi mente es editar la clave de registro UserChoice.

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoice
Clave Registro UserChoice – Hash ProgId

Hash este valor es generado automáticamente por Windows para validar la integridad de la asociación del tipo de archivo.
ProgId este valor corresponde al Id de la aplicación registrada que maneja el tipo de archivo.

El problema principal es que en las versiones recientes de Windows 8/10 este valor de registro está protegido por un hash asociado a un tipo de archivo, y siendo capaz de editarlo sin generar el hash valido la asociación es automáticamente restaurada a la aplicación predeterminada.

Haciendo una búsqueda rápida en google encontré algunas formas de hacerlo usando Directivas de Grupo (GPO Group Policy Object) o importando un .xml con la asociación de tipo de archivos por medio de DISM.exe, pero estos procesos son un poco extensos, después de una búsqueda más profunda y tomando en cuenta que mi cliente necesitaba un solución rápida encontré esta pequeña herramienta de línea de comando SetUserFTA.exe creada por Christoph Kolbicz la cual cumplía con lo requerido y opte por usarla momentáneamente, sin embargo yo quede intrigado por incluir este método directamente en una aplicación desarrollada en cualquier otro lenguaje como C++, AutoIt, Pascal o PowerShell.

Después de unos días luchando contra Windows, y haciendo un poco de investigación en Google, logre encontrar el método que usa Windows Internamente y desarrolle un código para implementarlo  en la aplicación de mi cliente.

Yo desarrolle una herramienta de línea de comando en PureBasic para hacer esta tarea en Windows 8/10 muy fácil de usar.


Ejemplo de uso:

Asignar Acrobat Reader DC como predeterminado para abrir archivos .pdf

SFTA.exe AcroExch.Document.DC .pdf

Asignar Sumatra PDF como predeterminado para abrir archivos .pdf

SFTA.exe Applications\SumatraPDF.exe .pdf

Espero que esta herramienta sea de utilidad.

SFTA Changelog

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

1.1.0 – 2019-08-13

Added

  • Add –reg Register Application Program Id
  • Add –unreg Unregister Application Program Id
  • Add –debug Display Debug Information
  • Add Windows 10-1115 Support – Thanks to Mehdi

1.0.0 – 2019-01-22

First Release


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *