Python脚本在HKEY_LOCAL_MACHINE中找不到注册表项值



我一直面临着一个问题,我的python脚本无法处理(HKLM:HKEY_LOCAL_MACHINE(,我在python中写了一个小脚本来搜索windows注册表项值。当我在CMD中执行搜索时,它显示了我想要的键值,我还注意到我的脚本在HKLM中的旧windows注册表值条目上可以正常工作,但对于新的条目,它不会显示任何内容。

这是我用python编写的用于检查windows注册表值的脚本。

from winreg import *
key_to_read = input("Enter Path:") #Path: SoftwareAbcKey
key = input("HKLM or HKCU:") #Hive Name: HKLMHKCU
if key == 'HKLM':
a = -2147483646
else:
a = -2147483647
try:
aReg = ConnectRegistry(None, a)
k = OpenKey(aReg, key_to_read)
print("Registry key value found.")
except:
print("Nothing found on the given path.")

如果您需要将键和值写入HKLM配置单元,那么您必须使用除了Python之外的完全不同的语言,或者必须使用除了"winreg";,由于winreg有一个主要缺陷,严重限制了您在注册表中的操作,因此大多数其他语言都没有问题。

它只是没能做到。它还抛出WinError 5;访问被拒绝";,但这是一种误导,只会让你陷入黑暗。您甚至可以将您的帐户不仅配置为本地管理员,还可以配置为"完全登录";"上帝模式";,将您的帐户进一步提升到系统级访问,作为操作系统的一部分运行,等等,但仍然没有爱。

如果是";"许可";,那么它只在内部对winreg的调用中,和/或必须传入的安全标志选项中,而不是您的实际帐户权限或任何特殊环境配置设置。但是,我已经尝试了每种组合(winreg.REG_WRITE/winreg.WIN_ALL_ACCESS/winreg.WIN64等(,但当指向HKLM配置单元时,都不起作用。给香港中文大学写信很好。同时,我可以手动修改HKLM中的注册表设置,或者用C#和.NET Framework类来修改,或者用带有直接访问Win32(advapi32.dll(的暗、非托管C#来修改C#,没有问题。

我想微软只是碰巧对自己的语言更友好:(

最新更新