我想用_winreg和Python读取windows注册表
它工作得很好,但它不显示REG_二进制值。。。当我在某个密钥中创建二进制值时,不管在哪里,它都会显示任何其他值而不是二进制,我需要解析二进制信息以获取我们公司硬件/软件证据的windows许可证密钥,我想使用此代码,但这不重要。。在
from _winreg import *
mapping = { "HKLM":HKEY_LOCAL_MACHINE, "HKCU":HKEY_CURRENT_USER, "HKU":HKEY_USERS }
def pathExists(hkey, regPath):
try:
reg = OpenKey(mapping[hkey], regPath)
except WindowsError:
return False
CloseKey(reg)
return True
def readSubKeys(hkey, regPath):
if not pathExists(hkey, regPath):
return -1
reg = OpenKey(mapping[hkey], regPath)
subKeys = []
noOfSubkeys = QueryInfoKey(reg)[0]
for i in range(0, noOfSubkeys):
subKeys.append(EnumKey(reg, i))
CloseKey(reg)
return subKeys
def readValues(hkey, regPath):
if not pathExists(hkey, regPath):
return -1
reg = OpenKey(mapping[hkey], regPath)
values = {}
noOfValues = QueryInfoKey(reg)[1]
for i in range(0, noOfValues):
values[EnumValue(reg, i)[0]] = EnumValue(reg, i)[1]
CloseKey(reg)
return values
我迟到了一点,哈哈,但今天在Python2.7.3中遇到了同样的问题。这个问题的原因是因为Python是一个32位的进程。在Windows 64位环境中运行时,调用32位进程以查找64位REG_二进制值会导致位问题。在
很遗憾,我无法使用\u winreg解决此问题。似乎没有选项可以用\u winreg更改命令提示符的sysnative位置。在
我使用的解决方案是:
C:\Windows\sysnative\命令行.exe/c命令的一部分将命令提示符shell设置为正确的位。然后,正常运行Reg查询将正常工作并允许读取Reg\二进制值。在
相关问题 更多 >
编程相关推荐