我正在使用 winreg.DeleteKey 从注册表中删除密钥。我使用 API 没有问题;但是我遇到了一个奇怪的问题,如果我从 HKEY_LOCAL_MACHINE\SOFTWARE 中删除一个密钥,代码会成功运行并删除(如果我再次运行它,它会说它找不到密钥,因为它刚刚被删除),但是密钥即使重新启动后仍显示在 Regedit 中!
我什至可以在 Regedit 中编辑键的值!但是,如果我再次尝试删除该密钥,则会引发 WindowsError,表示它无法找到指定的文件,即使它第一次工作也是如此!
有人知道发生了什么吗?这令人费解,我似乎找不到任何有关此的信息。
编辑:显然 32 位应用程序打开 32 位密钥,而不是 64 位密钥。当我尝试像这样打开密钥时:
aKey = winreg.OpenKeyEx(akey, subkey_str, 0, winreg.KEY_WOW64_64KEY)
我收到“拒绝访问”错误消息。我尝试使用 runas 运行脚本,以管理员身份打开终端。我的用户帐户具有管理员权限,我什至检查了密钥本身的权限。管理员和所有用户都可以完全访问密钥。
任何想法为什么我无法打开它?