import os
import sys
import winreg
class Reg:
File = "*\\shell"
Folder = "directory\\shell"
FileAndFolder = "ALLFilessystemObjects\\shell"
@staticmethod
def _addKey(path, Type):
key = winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, Type)
name = os.path.basename(path)
i = name.index(".")
if i != -1:
name = name[:name.index(".")]
name = f"open with {name}"
winreg.SetValue(key, name, winreg.REG_SZ, name)
nameKey = winreg.OpenKey(key, name)
winreg.SetValue(nameKey, 'command', winreg.REG_SZ, f"{path} %1")
winreg.CloseKey(nameKey)
winreg.CloseKey(key)
@staticmethod
def _removeKey(path, Type):
key = winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, Type)
name = os.path.basename(path)
i = name.index(".")
if i != -1:
name = name[:name.index(".")]
name = f"open with {name}"
nameKey = winreg.OpenKey(key, name)
winreg.DeleteKey(nameKey, "command")
winreg.CloseKey(nameKey)
winreg.DeleteKey(key, name)
winreg.CloseKey(key)
@classmethod
def addFile(cls, path):
cls._addKey(path, cls.File)
@classmethod
def addFolder(cls, path):
cls._addKey(path, cls.Folder)
@classmethod
def addFileAndFolder(cls, path):
cls._addKey(path, cls.FileAndFolder)
@classmethod
def removeFile(cls, path):
cls._removeKey(path, cls.File)
@classmethod
def removeFolder(cls, path):
cls._removeKey(path, cls.Folder)
@classmethod
def removeFileAndFolder(cls, path):
cls._removeKey(path, cls.FileAndFolder)
def test():
path = r"C:\Users\luoheng\Anaconda3\python.exe"
Reg.addFile(path)
def cleanTest():
path = r"C:\Users\luoheng\Anaconda3\python.exe"
Reg.removeFile(path)
def main():
# test()
# cleanTest()
path = sys.argv[1]
Reg.addFile(path)
if __name__ == "__main__":
main()