File Type Registration

There are a couple of reserved/predefined progids that should not be used for custom file types:

Name Min. OS Docu­mented Comment
* * MSDN
All­FileSystem­Objects *? MSDN
AudioCD ? MSDN
Briefcase ? ?
CompressedFolder ? ?
ConflictFolder ? ?
Desktop­Background WinVista? ?
Directory * MSDN FS directory
Drive * MSDN
DVD Win2000? MSDN
DVDFile Win98 MSDN Renamed to DVD in Win2000
Folder * MSDN FS and NS containers
Kind.* WinVista? ?
LibraryFolder Win7? ?
NetServer ? MSDN
NetShare ? MSDN
Network ? MSDN
Printers ? MSDN
Stack WinVista? ?
Unknown ? MSDN?
UserLibraryFolder Win7? ?

You should also stay away from the following (incomplete) list of keys, they are not progids at all:
AppID,
Applications,
CID?,
CID.Local?,
CLSID,
DirectShow,
ExplorerCLSIDFlags?,
Interface,
Local Settings,
Media Type,
MediaFoundation,
MIME,
SystemFileAssociations,
TypeLib,
VideoClipContainers and
VirtualStore.

Canonical Verbs:
Edit?,
Explore,
Find,
Open,
OpenAs,
Opennew,
Play?,
Preview?,
Print,
Printto,
Properties,
RunAs.

Every version of Windows adds documented and/or undocumented file type registration properties, here are some of them:

Name Type Loca­tion Docu­mented Comment
AlwaysShowExt REG_*? ProgId No? Related to FTA_AlwaysShowExt?
AppliesTo SZ Verb MSDN [Win7+? (Canonical AQS System­.StructuredQueryType­.* requires Win7+)]

Controls whether the verb is displayed or hidden

AppUser­ModelID SZ ProgId MSDN [Win7+]
AttributeMask DW Verb MSDN SFGAO
AttributeValue DW Verb MSDN SFGAO
BaseClass SZ? ProgId ? ASSOCKEY_­BASECLASS?
BrowserFlags DW, Bin? ProgId No? [IE4+]

OLE/ActiveX in-place activation flags: 0x8=”Browse in same window”, the rest are related to MSOffice compatibility.

See also: MS Forum Thread, MSOffice blog

Can­Recursively­Search ? ProgId ?
Check­SupportedTypes REG_*? Verb ?
Command SZ? Verb ? “%Encoded­DarwinID% [/switches]” *2 (SHELL32!­CExecuteApplication::­_SetDarwinCmdTemplate reads the string and parses it with CommandLine­From­MsiDescriptor)
CommandFlags DW Verb MSDN IExplorerCommand::GetFlags, EXPCMDFLAGS
CommandState­Handler SZ? Verb MSDN? IExplorer­Command­State *1
CommandState­Sync REG_*? Verb ? Don’t cache state?
ConflictPrompt SZ ProgId ? System­.PropList­.ConflictPrompt?
Content Type SZ .Ext MSDN MIME type
ContentView­ModeFor­Browse SZ ProgId, SFA­\.Ext, SFA­\kind, Kind­.kind MSDN System­.PropList­.ContentView­ModeFor­Browse
ContentView­ModeFor­Search SZ ProgId, SFA­\.Ext, SFA­\kind, Kind­.kind MSDN
ContentView­ModeLayout­PatternFor­Browse SZ ProgId, SFA­\.Ext, SFA­\kind, Kind­.kind MSDN
ContentView­ModeLayout­PatternFor­Search SZ ProgId, SFA­\.Ext, SFA­\kind, Kind­.kind MSDN
CurVer Key ProgId MSDN Versioned ProgIds
Default­AppliesTo SZ Verb MSDN [Win7+?] Controls which verb is the default
Default­DropEffect DW? ProgId ? DROPEFFECT_*?
DefaultIcon Key ProgId, .Ext MSDN *SZ with full path. (Can include resource index or id)
DelegateExecute SZ Verb­\Command MSDN [WinVista+? (Documented as Win7+)] {INPROC_SERVER, LOCAL_SERVER}

ASSOCSTR_­DELEGATEEXECUTE, IExecuteCommand *1

DocObject Key ProgId MSDN IOleDocument::GetDocMiscStatus (DOCMISC)
Download­InvokeDisabled ? Verb ?
CLSID SZ Verb­\DropTarget MSDN [WinXP+] {INPROC_SERVER, LOCAL_SERVER}

IDropTarget

EditFlags DW, Bin ProgId MSDN FILE­TYPE­ATTRIBUTE­FLAGS (ASSOCDATA_­EDITFLAGS)
Explorer­Command­Handler SZ? Verb MSDN? IExplorer­Command *1
ExplorerHost REG_*? Verb ?
Extended REG_* Verb MSDN [Win2000+?]
Extended­SubCommands­Key Key Verb MSDN?
Extended­SubCommands­Key SZ? Command­Store ? Include shell\verbs from the specified subkey (HKCR\subkey) in the submenu.
Extended­TileInfo SZ ProgId, SFA­\.Ext, SFA­\kind, Kind­.kind MSDN? System­.PropList­.ExtendedTileInfo
Friendly­Type­Name *SZ ProgId MSDN [Win2000+?]

Indirect string (@path\­module.dll,­-ResId)

FullDetails SZ ProgId, SFA­\.Ext, SFA­\kind, Kind­.kind MSDN? System­.PropList­.FullDetails
HasLUAShield SZ Verb MSDN [Win7+?]
HideIfDisabled REG_*? Verb ?
Icon *SZ? Verb ?
Image­OptionFlags DW, Bin? ProgId No? [WinXP+?]
Implied­Selection­Model DW Verb MSDN ==0: Item verb, !=0: Background menu
IncludeShare ? ProgId? ? Only for special folder types?
IncludeSync ? ProgId? ? Only for special folder types?
InfoTip *SZ ProgId MSDN “prop:” array string or a indirect string.

System­.PropLis­t.InfoTip, ASSOCSTR_­INFOTIP

IsIn­Context­Menu ? Verb ?
IsShortcut REG_* ProgId MSDN
Launch­Explorer­Flags DW Verb ?
LegacyDisable REG_*? Verb MSDN [WinXP+?]

Don’t display verb in IContextMenu (It has been replaced by a ShellEx item etc). The verb can still be invoked by name with ShellExecute?

Max­Download­FileSize ? Verb ?
Media­Type­Flags DW? Verb ? SyncAndShareVerbs sample *1 (Implemented by the {880ac964-­2e34-­4425-­8cf2-­86ada2c3a019} CommandState­Handler: 1=Image, 2=Audio, 4=Video)
MUIVerb *SZ Verb MSDN
Multi­Select­Model SZ Verb MSDN Single | Document | Player
NeverDefault REG_*? Verb ? [WinVista?] CreateProcess Verb Sample
NeverShowExt REG_*? ProgId ?
No­JumpList­Path­Tooltip REG_*? ProgId ? [Win7+?]

Only for special folder types?

NoOpen REG_*? ProgId, .Ext? MSDN [Win2000+?]

ASSOCSTR_­NOOPEN

See also: MSJ

NoOpenWith REG_*? ProgId No? Most applications should use the Applications key and not force this on a (folder?) type.
NoPrevious­Versions REG_*? ProgId ? Remove previous versions tab?
NoRecentDocs REG_*? ProgId MSDN Related to FTA_NoRecentDocs?
NoSendTo REG_*? ProgId ? Remove SendTo submenu
NoStatic­DefaultVerb REG_*? ProgId ?
NoWorking­Directory REG_*? Verb ?
OnlyIn­Browser­Window REG_*? Verb ?
OpenWith­List Key .Ext­\Open­With­List, SFA­\.Ext­\Open­With­List, SFA­\kind­\Open­With­List MSDN List of subkeys, the name of the key must match your application registration.
OpenWith­Progids REG_* .Ext­\Open­With­Progids MSDN List of values, the name must match your ProgId
PerceivedType SZ .Ext MSDN [WinXP+?]

System.PerceivedType / PERCEIVED

Position SZ Verb MSDN Top|Bottom
Prefer­Execute­OnMismatch DW ProgId MSDN Mark the MIME handler to be ignored by Internet Explorer when there is a MIME/extension mismatch (Load rejected files using the shell extension handler)
PreviewDetails SZ ProgId, SFA­\.Ext, SFA­\kind, Kind­.kind MSDN? System.­PropList.­PreviewDetails
Programmatic­AccessOnly SZ, REG_*? Verb ? Removes verb from IContextMenu enumeration?
Query­ClassStore REG_*? ProgId ? ASSOCDATA_­QUERYCLASSSTORE?
QuickTip SZ ProgId MSDN System­.PropList­.QuickTip, ASSOCSTR_­QUICKTIP
ReadWrite­Required REG_*? Verb ? Disable verb if target is read-only? (Does not check ACL?)
ReadWrite­TempFile ? ProgId ?
Separator­After REG_*? Verb ?
Separator­Before REG_*? Verb ?
Set­DefaultsFor SZ ProgId MSDN prop:­System­.Author;­System­.Document­.DateCreated;­System­.Photo­.DateTaken
SetWorking­Directory­FromTarget REG_*? Verb ? Current directory is set to %1 during invoke?
StaticVerbOnly REG_*? Verb, Command­Store? ?
Sub­Commands *SZ Verb MSDN Semicolon-delimited list of the verbs from the command store.
Suppression­Policy DW Verb MSDN RESTRICTIONS
Suppression­PolicyEx SZ Verb MSDN? GUID?
Suppression­SlapiPolicy SZ Verb ? ProductOptions: ProductPolicy?
Thumbnail­Cutoff DW .Ext, ProgId? MSDN
TileInfo SZ ProgId, SFA­\.Ext, SFA­\kind, Kind­.kind MSDN? System.­PropList.­TileInfo
TypeOverlay SZ, REG_*? .Ext, ProgId MSDN? “DefaultIcon” style path for a specific icon, empty value to disable icon overlay and default icon if not present. (This design is flawed since it does not allow HKCU to override the built-in setting for normal images to force overlay display, the blocking behavior should have been triggered by a value like “-“)
URL Protocol SZ, REG_*? ProgId MSDN
UseOriginal­UrlEncoding DW ? MSDN? [IE9+]

Don’t percent decode URL before passing it to the protocol handler.

  1. Shell SDK Samples
  2. Darwin Descriptor: <Base85ProductGUID> [Feature] “>” <Base85ComponentGUID>
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: