Jump to content

Talk:Windows Shell Extension: Difference between revisions

m
link fixes
(in theory: if UserChoice is used, you have to edit its linked key (../shell) (better do backup and restore it when your own changes get uninstalled))
m (link fixes)
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
==Research==
==Research==
===General===
===General structure===
* https://learn.microsoft.com/en-us/windows/win32/sysinfo/structure-of-the-registry
* Every node is a '''key''' that can have '''subkeys''' and/or data ("'''value'''") which is displayed at the right side of the regedit GUI.
* Each '''value''' has 3 attributes: '''name''', '''type''', '''data'''
 
 
===Hive===
* '''HKEY_CLASSES_ROOT is a <span style="color:red">merged view</span>''' of the '''...\Software\Classes''' sub hierarchies in
* '''HKEY_CLASSES_ROOT is a <span style="color:red">merged view</span>''' of the '''...\Software\Classes''' sub hierarchies in
** HKLM ('''HKEY_LOCAL_MACHINE''')
** HKLM ('''HKEY_LOCAL_MACHINE''')
Line 9: Line 15:




====Minimum requirements for new file types====
===Key types===
'''Reg_SZ'''
* Standard string
 
'''Reg_EXPAND_SZ'''
* Allows system variables like in <code>"'''%SystemRoot'''"\Notepad.exe %1</code>
* When used it expands to become an actual path.
 
'''Other'''
* https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry-value-types
 
 
===Minimum requirements for new file types===
* '''HKEY_CLASSES_ROOT\.[yourExt]\shell\open\command'''
* '''HKEY_CLASSES_ROOT\.[yourExt]\shell\open\command'''
* this command must have a '''Default key''' that is of '''type REG_EXPAND_SZ'''
* if this key is to store a system variable, it's '''Default value''' needs to be of '''type REG_EXPAND_SZ'''
** creating this manually gives a REG_SZ type, which will not work and cannot be changed within the regedit GUI
** creating this manually gives a REG_SZ type, which will not work and cannot be changed within the regedit GUI
** REG_EXPAND_SZ type can be created with reg files and '''programmatically'''
** REG_EXPAND_SZ type can be created with reg files and '''programmatically'''




====Mind already existing alternate hierarchies====
===Mind already existing alternate hierarchies===
* '''HKEY_CLASSES_ROOT\.[yourExt]
* '''HKEY_CLASSES_ROOT\.[yourExt]
If not empty, this key might have data such as '''<span style="color:red">ext</span>file''' which will point to '''HKEY_CLASSES_ROOT\[<span style="color:red">ext</span>file]'''
If not empty, this key might have data such as '''<span style="color:red">ext</span>file''' which will point to '''HKEY_CLASSES_ROOT\[<span style="color:red">ext</span>file]'''
Line 31: Line 49:




====User overrides====
===User overrides===
The following will override HKEY_LOCAL_MACHINE keys as the HKEY_CURRENT_USER has a higher priority.
The following will override HKEY_LOCAL_MACHINE keys as the HKEY_CURRENT_USER has a higher priority.


Line 46: Line 64:




====System overrides (backups ?)====
===System overrides (backups) ?===
  Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ApplicationAssociationToasts
  Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ApplicationAssociationToasts
   Applications\NOTEPAD.EXE_.yourExt (type REG_DWORD)
   Applications\NOTEPAD.EXE_.yourExt (type REG_DWORD)
Line 52: Line 70:


<!--
<!--
====Default programs====
===Default programs===
* "In Windows 10 to add the program to the "Defaults Programs" list, the program should have the "CompanyName" in resources." - [https://answers.microsoft.com/en-us/windows/forum/windows_10-other_settings/how-to-add-my-own-program-to-the-list-of-default/cd1d1305-9870-4156-9b99-fc03b40c1fc9 Nazaury]
* "In Windows 10 to add the program to the "Defaults Programs" list, the program should have the "CompanyName" in resources." - [https://answers.microsoft.com/en-us/windows/forum/windows_10-other_settings/how-to-add-my-own-program-to-the-list-of-default/cd1d1305-9870-4156-9b99-fc03b40c1fc9 Nazaury]
-->
-->
===Sub Menus===
For sub menus you need a '''SubCommands''' value. The commands may contain points in their name and are separated by semicolons.
shell
  |
  +-- MenuName
        |
        +-- Name: Icon, Type: REG_SZ, Data: "PATH_to_exe"
        +-- Name: MUIVerb, Type: REG_SZ, Data: displayed name
        +-- Name: '''SubCommands''', Type: REG_SZ, Data: MenuName.commandName1;MenuName.commandName2;MenuName.commandNameN
Individual commands are then stored at
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell
MenuName.commandName1
  |
  +-- command
MenuName.commandName2
  |
  +-- command
MenuName.commandNameN
  |
  +-- command




===Terms===
===Terms===
* The H in abbreviations stands for Hive.
* The H in abbreviations stands for Hive.
[[Category:Modding ideas]]