I just wiped my HDD for a clean OS install & made this script to avoid the whole Open with... > More Apps > Look for another app on this PC > etc...
process for setting application defaults in Windows.
Benefits:
- define a ton of associations simultaneously
- you can use the same script for quick setup of associations on clean OS installations, multiple systems, etc.
- easily define icons per file-type
Note:
If you notice that your icons don’t change after running the script, you can force an update with:
TenForums > Instant_Clear_and_Reset_Thumbnail_Cache.bat
### Warning :warning:
This script will overwrite registry values, so maybe back up your registry or just don’t use this if you’re not comfortable working with the registry.
( I personally use unique file-type
values only, so that only the extension
's file-type reference is overwritten. The script is limited to HKEY_CURRENT_USER/SOFTWARE/Classes/
, so there’s not much risk - but still: use at your own discretion. )
It will also dissociate any custom context menu entries that a particular extension might have, unless you match the original file-type.
( EG: .bat
> Run As Administrator
)
Script:
import winreg
def get_AssociationData():
data = []
# data.append( ( __EXTENSION__, __FILE_TYPE__, __APPLICATION_PATH__, __ICON_PATH__ ) )
#▓▓▓▓▓║ File Association Data ║▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓⌠¦g1⌡#
data.append( ( "sublime-build", "SublimeText.Build", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "sublime-commands", "SublimeText.Commands", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "sublime-completions", "SublimeText.Completions", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "sublime-keymap", "SublimeText.KeyMap", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "sublime-macro", "SublimeText.Macro", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "sublime-menu", "SublimeText.Menu", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "sublime-menu.template", "SublimeText.MenuTemplate", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "sublime-mousemap", "SublimeText.MouseMap", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "sublime-package", "SublimeText.Package", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "sublime-project", "SublimeText.Project", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "sublime-settings", "SublimeText.Settings", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "sublime-snippet", "SublimeText.Snippet", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "sublime-syntax", "SublimeText.Syntax", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "sublime-theme", "SublimeText.Theme", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "sublime-workspace", "SublimeText.Workspace", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "sublime_session", "SublimeText.Session", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "css", "File.CSS", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "java", "File.Java", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "json", "File.JSON", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "md", "File.MarkDown", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "pde", "File.Processing", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "py", "File.Python", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "xml", "File.XML", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "xys", "File.XYplorerScript", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
data.append( ( "yaml", "File.YAML", "C:\\Program Files\\Sublime Text 3\\sublime_text.exe", None ) )
#▓▓▓▓▓║ /File Association Data ║▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓⌠¦g1⌡#
return( data )
def update_RegistryEntry( path, key, value ):
try:
winreg.CreateKey( HKEY_CURRENT_USER, path )
registryEntry = winreg.OpenKey( HKEY_CURRENT_USER, path, 0, winreg.KEY_WRITE )
winreg.SetValueEx( registryEntry, key, 0, winreg.REG_SZ, value )
winreg.CloseKey( registryEntry )
return True
except WindowsError:
return False
def add_FileAssociations():
failCount = 0
associationData = get_AssociationData()
for dataSet in associationData:
extension = "." + dataSet[ 0 ]
fileType = dataSet[ 1 ]
application = "\"" + dataSet[ 2 ] + "\" \"%1\""
icon = dataSet[ 3 ]
extension_Path = SOFTWARE_PATH + extension
fileType_Path = SOFTWARE_PATH + fileType + FILETYPE_SUFFIX
icon_Path = SOFTWARE_PATH + fileType + "\\DefaultIcon"
extension_WasWritten = update_RegistryEntry( extension_Path, DEFAULT_KEY, fileType )
fileType_WasWritten = update_RegistryEntry( fileType_Path, DEFAULT_KEY, application )
icon_WasWritten = update_RegistryEntry( icon_Path, DEFAULT_KEY, icon )
if extension_WasWritten \
and fileType_WasWritten \
and icon_WasWritten:
print( " SUCCESS: " + extension )
else:
print( "!!! FAIL !!! " + extension )
failCount += 1
if failCount > 0:
print ( "\n" + str( failCount ) + " FAILED ASSOCIATIONS" )
else:
print ( "\n" + "ALL ASSOCIATIONS WERE SUCCESSFUL" )
HKEY_CURRENT_USER = winreg.HKEY_CURRENT_USER
SOFTWARE_PATH = "SOFTWARE\\Classes\\"
FILETYPE_SUFFIX = "\\shell\\open\\command"
DEFAULT_KEY = None
add_FileAssociations()