24 lines
857 B
Python
24 lines
857 B
Python
from winreg import *
|
|
from contextlib import suppress
|
|
import itertools
|
|
|
|
def subkeys(path, hkey=HKEY_CLASSES_ROOT, flags=0):
|
|
with suppress(WindowsError), OpenKey(hkey, path, 0, KEY_READ|flags) as k:
|
|
for i in itertools.count():
|
|
yield EnumKey(k, i)
|
|
|
|
def subvalues(path, hkey=HKEY_CLASSES_ROOT, flags=0):
|
|
with suppress(WindowsError), OpenKey(hkey, path, 0, KEY_READ|flags) as k:
|
|
for i in itertools.count():
|
|
yield EnumValue(k, i)
|
|
|
|
for entry in subkeys(""):
|
|
if "shell" not in list(subkeys(entry)):
|
|
continue
|
|
|
|
with suppress(WindowsError):
|
|
key = OpenKey(HKEY_CLASSES_ROOT, f"{entry}\\shell\\open\\command")
|
|
command = EnumValue(key, 0)[1]
|
|
protocolEnabled = "URL Protocol" in (x[0] for x in subvalues(entry))
|
|
if protocolEnabled:
|
|
print(f"{entry:38} : {command}") |