Current version

v1.10.4 (stable)

Navigation

Main page
Archived news
Downloads
Documentation
   Capture
   Compiling
   Processing
   Crashes
Features
Filters
Plugin SDK
Knowledge base
Contact info
 
Other projects
   Altirra

Archives

Blog Archive

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.

Comments

This blog was originally open for comments when this entry was first posted, but was later closed and then removed due to spam and after a migration away from the original blog software. Unfortunately, it would have been a lot of work to reformat the comments to republish them. The author thanks everyone who posted comments and added to the discussion.