def DllUnregisterServer(): import winreg paths = [ "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Desktop\\Namespace\\" + ShellFolder._reg_clsid_, "%s\\shellex\\ContextMenuHandlers\\%s" % (ContextMenu._context_menu_type_, ContextMenu._reg_desc_), ] for path in paths: try: winreg.DeleteKey(winreg.HKEY_LOCAL_MACHINE, path) except WindowsError as details: import errno if details.errno != errno.ENOENT: print("FAILED to remove %s: %s" % (path, details)) propsys.PSUnregisterPropertySchema(get_schema_fname()) print(ShellFolder._reg_desc_, "unregistration complete.")
# register the context menu handler under the FolderViewSampleType type. keypath = "%s\\shellex\\ContextMenuHandlers\\%s" % (ContextMenu._context_menu_type_, ContextMenu._reg_desc_) key = _winreg.CreateKey(_winreg.HKEY_CLASSES_ROOT, keypath) _winreg.SetValueEx(key, None, 0, _winreg.REG_SZ, ContextMenu._reg_clsid_) propsys.PSRegisterPropertySchema(get_schema_fname()) print ShellFolder._reg_desc_, "registration complete." def DllUnregisterServer(): import _winreg paths = [ "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Desktop\\Namespace\\" + ShellFolder._reg_clsid_, "%s\\shellex\\ContextMenuHandlers\\%s" % (ContextMenu._context_menu_type_, ContextMenu._reg_desc_), ] for path in paths: try: _winreg.DeleteKey(_winreg.HKEY_LOCAL_MACHINE, path) except WindowsError, details: import errno if details.errno != errno.ENOENT: print "FAILED to remove %s: %s" % (path, details) propsys.PSUnregisterPropertySchema(get_schema_fname()) print ShellFolder._reg_desc_, "unregistration complete." if __name__=='__main__': from win32com.server import register register.UseCommandLine(ShellFolder, ContextMenu, debug = debug, finalize_register = DllRegisterServer, finalize_unregister = DllUnregisterServer)