Guide to Understanding ProgIDs and File Type Associations


Overview

In Windows, ProgIDs (Programmatic Identifiers) are unique labels that Windows uses to identify programs that can open specific types of files. ProgIDs don’t directly assign file types to applications but serve as the “identifier” that allows you to specify which program to use when setting file type associations.

Let’s go over how ProgIDs work, where they are stored, and how they relate to file associations in Windows.


1. What is a ProgID?

A ProgID is a name assigned to a program that can open particular types of files. For example, a text editor might have a ProgID like MyTextEditor.Document, which helps Windows identify it as an application that can handle .txt files. A ProgID includes an executable path, enabling Windows to identify which application should be used to open files associated with it. A ProgID alone does not tell Windows how to open a .txt file, but it contains the information about the program and command used to open it. The user can associate a file type (e.g., .txt) with a ProgID, which specifies the open command to launch the corresponding application.

An example ProgID would look like this:

Simplified: MyAppProgID points to the path of MyApp.exe, specifying the command Windows should use to open associated files.


2. Where are ProgIDs stored?

ProgIDs are stored in the Registry, where there are different locations for system-wide ProgIDs (for all users) and user-specific ProgIDs (for only the current user):

When a ProgID is registered in HKLM, it is available for all users on the machine.

When a ProgID is registered in HKCU, it only affects the current user, allowing for personalized settings without impacting other accounts on the computer.

IMPORTANT: If both a system-wide and a user-specific ProgID exist, Windows prioritizes the user-specific setting for that user.


HKCR combines the two locations:

Most applications query HKEY_CLASSES_ROOT directly for simplicity, as it resolves the effective settings by merging the two locations.


4. How ProgIDs relate to file associations

ProgIDs provide information to Windows about how a program opens a file but don’t automatically associate file types with that program. Instead, file type associations define the actual link between a file extension or protocol (like .txt and https:// or mailto://) and a ProgID.

On older versions of Windows, it was possible to use the assoc and ftype commands to create file associations at the machine level (affecting all users).

However, in Windows 10 and 11, certain file types have their associations enforced at the user level, meaning that system-wide (machine-level) settings cannot override user preferences for these file types.

While Microsoft has not published an official list of these enforced file types, common examples include:

For these file types, attempts to set default associations at the machine level will be overridden by user-level settings.


5. Managing ProgIDs with ProgIDTool

ProgIDTool is a handy utility for viewing, creating, and modifying ProgIDs without diving directly into the registry.


Summary

IMPORTANT: To use SetUserFTA successfully, you must first identify the ProgID your application uses or create one yourself using a tool like ProgIDTool. Once you have the ProgID, you can associate a file type (extension) or a protocol (e.g., https, mailto) with the ProgID accordingly.