1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| import winreg
def search_reg_key(reg_path, reg_key_name): result = [] reg_key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, reg_path) sub_key_count, _, _ = winreg.QueryInfoKey(reg_key) for i in range(sub_key_count): try: sub_key_name = winreg.EnumKey(reg_key, i) sub_key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, f"{reg_path}\\{sub_key_name}") try: value, _ = winreg.QueryValueEx(sub_key, reg_key_name) result.append({ 'path':f"{reg_path}\\{sub_key_name}", 'value': value }) winreg.CloseKey(sub_key) continue except: winreg.CloseKey(sub_key) pass result.extend(search_reg_key(f"{reg_path}\\{sub_key_name}", reg_key_name)) except: pass winreg.CloseKey(reg_key) return result
def write_reg_key(reg_path, reg_key_name, reg_key_type, reg_key_value): key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, reg_path, 0, winreg.KEY_WRITE) print(reg_key_value) winreg.SetValueEx(key, reg_key_name, 0, reg_key_type, reg_key_value) winreg.CloseKey(key)
reg_list = search_reg_key("SYSTEM\\CurrentControlSet\\Control\\Class", "NV_Modes") width = int(input("分辨率宽:")) height = int(input("分辨率高:")) new_resolution = f"{width}x{height}"
now_resolution_list = [] for reg_item in reg_list: flag = True for resolution_item in reg_item['value'][0].split(" "): if "x" not in resolution_item: continue resolution_value = "x".join(resolution_item.split("x")[0:2]) if resolution_value == new_resolution: flag = False if resolution_value not in now_resolution_list: now_resolution_list.append(resolution_value) if flag: split_reg_value = reg_item['value'][0].split(" ") split_reg_value.insert(1, f"{new_resolution}x8,16,32,64") if input("是否写入注册表(y/n)") != "y": exit() write_reg_key(reg_item['path'], "NV_Modes", winreg.REG_MULTI_SZ, [" ".join(split_reg_value)])
print(f"写入前支持的分辨率: {now_resolution_list}")
|