Search code examples
windowswindows-8registrysysprep

What's the Hash in HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.<extension>\UserChoice?


With Windows 8, the user's choice for which application to open for a given document type seems to be kept in

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\<extension>\UserChoice

For PDFs on my machine, this contains:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoice]
"Hash"="xh8KhPWlZL0="
"ProgId"="AcroExch.Document"

Yet on another machine the hash is different. What's being hashed, and is there any way to create a .reg file which can be applied to another machine to set this preference?


Solution

  • Someone reverse engineered the hash and wrote a CLI tool to set file associations:

    http://kolbi.cz/blog/?p=346

    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))))
    

    Not all details are revealed but probably enough to reverse engineer the rest.