¶Odd requirement for the Set Program Associations UI in Windows 8
Okay, this is another one of those frustrating bugs that took me hours to track down and had a cause so unbelievable I had to check it six times: why the Set Program Associations UI dialog refused to come up for a program in Windows 8, but worked fine on Windows 7 x64.
From what I've been able to tell, the LaunchAdvancedAssociationUI() call in the IApplicationAssociationRegistrationUI interface has a new requirement in Windows 8 that is strange and undocumented. Specifically, the shell verb commands in the ProgIDs that are specified in the program's FileAssocations registration key must point to an executable with a valid CompanyName field in its version block in order to be considered valid. If this executable doesn't exist or the CompanyName field is missing, the ProgID is skipped, and if no valid associations are detected, the call will fail with the HRESULT 80070490. Even more confusing, if there was previously an executable at that location which had CompanyName, the call will succeed and show the cached name instead, so to double-check this you need to rename executables to different names. Basically, if you are having trouble bringing up the Set Program Associations UI dialog, throw something into that version field for it to display.