Windows Installer Registry Notes

From Aptana Development

SDOC: http://msdn2.microsoft.com/en-us/library/aa969374.aspx#attributes

HKEY_CLASSES_ROOT

  • Aptana.IDE.SDOC.0
    • (Default) = My Friendly Name
    • EditFlags [REG_DWORD]= 0x00000001
    • FriendlyTypeName [REG_EXPAND_SZ]= @%SystemRoot%\shell32.dll,-154
    • InfoTip [REG_EXPAND_SZ]= @%SystemRoot%\shell32.dll,-54
    • CurVer
      • (Default) = Vendor.comp.1
    • DefaultIcon
      • (Default) = %SystemRoot%\shell32.dll,-1


Adding File Type Keys to the Registry

From: http://msdn2.microsoft.com/en-us/library/aa969371.aspx

The registry stores the file extension keys under HKEY_CLASSES_ROOT . These keys have the general form: .extension=ProgID. It is important to include the leading period when creating file type key entries in the registry. For example, if you want a file type with the short extension .myp and the long extension .myp-image to open with an application called MyProgram, then you use the following syntax.

  • HKEY_CLASSES_ROOT
    • .myp
      • (Default) = vendor.MyProgram.1
    • .myp-image
      • (Default) = vendor.MyProgram.1
    • vendor.MyProgram.1
      • (Default) = MyProgram Application

File type extension entries in the registry have several optional subkeys and attributes. Those used by file associations are:

  • Default Value. Set the default value of the extension key to the ProgID to which it is linked. This is a registry string (REG_SZ).
  • PerceivedType. Set this string to the PerceivedType to which the file belongs, if any. This string is not used by Windows versions prior to Windows XP. Generally, it is one of the following:
    • Image
    • Text
    • Audio
    • Video
    • Compressed
    • System
  • Content Type. Set this string to the file type's MIME content type.
  • OpenWithProgids. This subkey contains a list of alternate ProgIDs for this file type. The programs for these ProgIDs appear in the Open With dialog box. Whenever a program takes over this file type by changing the default value, it should also add an entry to this list.
  • OpenWithList. This subkey contains one or more application keys for applications to appear in the Open With dialog box entry for the file type.

The general form of a file extension key is then:

  • HKEY_CLASSES_ROOT
    • .ext
      • (Default) = ProgID.ext.1 (REG_SZ)
      • PerceivedType= PerceivedType (REG_SZ)
      • Content Type= mime content type (REG_SZ)
      • OpenWithProgids
        • ProgID2.ext.1
        • ProgID3.ext.1
      • OpenWithList
        • AlternateProgram1.exe
        • AlternateProgram2.exe
      • ProgID.ext.1
        • shellnew

ShellExecute: http://msdn2.microsoft.com/en-us/library/aa969373.aspx

When the ShellExecute function is provided with the name of an executable file in its lpFile parameter, there are several places that it can look in an attempt to find the file.

  • HKEY_LOCAL_MACHINE
    • SOFTWARE
      • Microsoft
        • Windows
          • CurrentVersion
            • App Paths
              • file.exe
                • (Default) = The fully-qualified path and file name
                • Path= A semicolon-separated list of directories
                • DropTarget= {CLSID}

Default programs: http://msdn2.microsoft.com/en-us/library/aa969375.aspx

Notes From Other Applications

  • Why write to HKCR or HKCU:
  • Dynamic Data Exchange?

Adding a file association:

HKCR\UltraEdit.js	SUCCESS	Access: 0x2000000 	
HKCR\UltraEdit.js\shell	SUCCESS	Access: 0x2000000 	
HKCR\UltraEdit.js\shell\open	SUCCESS	Access: 0x2000000 	
HKCR\UltraEdit.js\shell\open\command	NOT FOUND		
HKCR\UltraEdit.js\shell\open\command\(Default)	SUCCESS	""C:\Program Files\IDM Computer Solutions\UltraEdit\Uedit32.exe" "%1""	
HKCR\UltraEdit.js\shell\print	SUCCESS	Access: 0x2000000 	
HKCR\UltraEdit.js\shell\print\command	NOT FOUND		
HKCR\UltraEdit.js\shell\print\command\(Default)	SUCCESS	""C:\Program Files\IDM Computer Solutions\UltraEdit\Uedit32.exe" /p "%1""	
HKCR\UltraEdit.js\(Default)	SUCCESS	""	
HKCR\UltraEdit.js\Old Default	SUCCESS	"JSFile"	
HKCU\Software\Classes\.js\(Default)	SUCCESS	"UltraEdit.js"	

Removing a file association (there should be a set value where is sets back the old association):

HKCR\UltraEdit.js\shell\open\command	SUCCESS	Key: 0xE1B57460	
HKCR\UltraEdit.js\shell\open	SUCCESS	Key: 0xE293BAB8	
HKCR\UltraEdit.js\shell\print\command	SUCCESS	Key: 0xE1B57460	
HKCR\UltraEdit.js\shell\print	SUCCESS	Key: 0xE293BAB8	
HKCR\UltraEdit.js\shell	SUCCESS	Key: 0xE44802F0	
HKCR\UltraEdit.js	SUCCESS	Key: 0xE61EAC78	
CreateKey	HKCU\Software\Classes\TextPad.java	SUCCESS	Access: 0x2001F 	
SetValue	HKCU\Software\Classes\TextPad.java\(Default)	SUCCESS	"Java Language Source file"	
SetValue	HKCU\Software\Classes\TextPad.java\AlwaysShowExt	SUCCESS	"1"	
CreateKey	HKCU\Software\Classes\TextPad.java\shell	SUCCESS	Access: 0x2001F 	
CreateKey	HKCU\Software\Classes\TextPad.java\shell\Open	SUCCESS	Access: 0x2001F 	
CreateKey	HKCU\Software\Classes\TextPad.java\shell\Open\ddeexec	SUCCESS	Access: 0x2001F 	
SetValue	HKCU\Software\Classes\TextPad.java\shell\Open\ddeexec\(Default)	SUCCESS	"Open("%1")"	
SetValue	HKCU\Software\Classes\TextPad.java\shell\Open\ddeexec\Topic\(Default)	SUCCESS	"system"	
SetValue	HKCU\Software\Classes\TextPad.java\shell\Open\ddeexec\Application\(Default)	SUCCESS	"VisualStudio.8.0"	
CreateKey	HKCU\Software\Classes\TextPad.java\shell\Open\Command	SUCCESS	Access: 0x2001F 	
SetValue	HKCU\Software\Classes\TextPad.java\shell\Open\Command\(Default)	SUCCESS	""C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.exe" /dde"	
CreateKey	HKCU\Software\Classes\TextPad.java\DefaultIcon	SUCCESS	Access: 0x2001F 	
SetValue	HKCU\Software\Classes\TextPad.java\DefaultIcon\(Default)	SUCCESS	"C:\Program Files\Microsoft Visual Studio 8\VJ#\bin\vjsproj.dll,1"	
SetValue	HKCU\Software\Classes\TextPad.java\(Default)	SUCCESS	"Java Language Source file"	
SetValue	HKCU\Software\Classes\TextPad.java\shell\open\ddeexec\(Default)	SUCCESS	"[open("%1")]"	
SetValue	HKCU\Software\Classes\TextPad.java\shell\open\ddeexec\application\(Default)	SUCCESS	"TextPad.5.0"	
SetValue	HKCU\Software\Classes\TextPad.java\shell\open\ddeexec\topic\(Default)	SUCCESS	"System"	
SetValue	HKCU\Software\Classes\TextPad.java\shell\open\command\(Default)	SUCCESS	""C:\Program Files\TextPad 5\TextPad.exe" -s"	
CreateKey	HKCU\Software\Classes\TextPad.java\shell\print	SUCCESS	Access: 0x2001F 	
CreateKey	HKCU\Software\Classes\TextPad.java\shell\print\command	SUCCESS	Access: 0x2001F 	
SetValue	HKCU\Software\Classes\TextPad.java\shell\print\command\(Default)	SUCCESS	""C:\Program Files\TextPad 5\TextPad.exe" -s -p "%1""	
CreateKey	HKCU\Software\Classes\TextPad.java\shell\printto	SUCCESS	Access: 0x2001F 	
CreateKey	HKCU\Software\Classes\TextPad.java\shell\printto\command	SUCCESS	Access: 0x2001F 	
SetValue	HKCU\Software\Classes\TextPad.java\shell\printto\command\(Default)	SUCCESS	""C:\Program Files\TextPad 5\TextPad.exe" -s -pt "%1" "%2" "%3" "%4""	
SetValue	HKCU\Software\Classes\.java\(Default)	SUCCESS	"TextPad.java"	
SetValue	HKCU\software\Helios\TextPad 5\Associations\.java	SUCCESS	"VisualStudio.java.8.0"	
SetValue	HKCU\Software\Helios\TextPad 5\Document Classes\Java\Type	SUCCESS	0x2