📄 winreg.py
字号:
#!/usr/bin/python## tool to manipulate a remote registry# Copyright Andrew Tridgell 2005# Copyright Jelmer Vernooij 2007# Released under the GNU GPL v3 or later#import sys# Find right directory when running from source treesys.path.insert(0, "bin/python")from samba.dcerpc import winregimport optparseimport samba.getopt as optionsparser = optparse.OptionParser("%s <BINDING> [path]" % sys.argv[0])sambaopts = options.SambaOptions(parser)parser.add_option_group(sambaopts)parser.add_option("--createkey", type="string", metavar="KEYNAME", help="create a key")opts, args = parser.parse_args()if len(args) < 1: parser.print_usage() sys.exit(-1)binding = args[0]print "Connecting to " + bindingconn = winreg.winreg(binding, sambaopts.get_loadparm())def list_values(key): (num_values, max_valnamelen, max_valbufsize) = conn.QueryInfoKey(key, winreg.String())[4:8] for i in range(num_values): name = winreg.StringBuf() name.size = max_valnamelen (name, type, data, _, data_len) = conn.EnumValue(key, i, name, 0, "", max_valbufsize, 0) print "\ttype=%-30s size=%4d '%s'" % type, len, name if type in (winreg.REG_SZ, winreg.REG_EXPAND_SZ): print "\t\t'%s'" % data# if (v.type == reg.REG_MULTI_SZ) {# for (j in v.value) {# printf("\t\t'%s'\n", v.value[j])# }# }# if (v.type == reg.REG_DWORD || v.type == reg.REG_DWORD_BIG_ENDIAN) {# printf("\t\t0x%08x (%d)\n", v.value, v.value)# }# if (v.type == reg.REG_QWORD) {# printf("\t\t0x%llx (%lld)\n", v.value, v.value)# }def list_path(key, path): count = 0 (num_subkeys, max_subkeylen, max_subkeysize) = conn.QueryInfoKey(key, winreg.String())[1:4] for i in range(num_subkeys): name = winreg.StringBuf() name.size = max_subkeysize keyclass = winreg.StringBuf() keyclass.size = max_subkeysize (name, _, _) = conn.EnumKey(key, i, name, keyclass=keyclass, last_changed_time=None)[0] subkey = conn.OpenKey(key, name, 0, winreg.KEY_QUERY_VALUE | winreg.KEY_ENUMERATE_SUB_KEYS) count += list_path(subkey, "%s\\%s" % (path, name)) list_values(subkey) return countif len(args) > 1: root = args[1]else: root = "HKLM"if opts.createkey: reg.create_key("HKLM\\SOFTWARE", opt.createkey)else: print "Listing registry tree '%s'" % root try: root_key = getattr(conn, "Open%s" % root)(None, winreg.KEY_QUERY_VALUE | winreg.KEY_ENUMERATE_SUB_KEYS) except AttributeError: print "Unknown root key name %s" % root sys.exit(1) count = list_path(root_key, root) if count == 0: print "No entries found" sys.exit(1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -