这段代码曾在Vista(和Windows XP)上运行正常,但升级到Windows 7后,会出现以下错误:
我相当确定这是Windows 7安全模型变化的结果,但是我尝试了各种搜索,迄今为止没有找到可以用作答案的内容。(并不是说这很重要,但为了避免"你为什么要那样做?"的回复,这是一个开发者工具,可以在多个Python安装之间切换注册表,在需要更多控制Python版本和可用包的多项目环境中使用,而不是像virtualenv这样的东西。)
编辑:登录用户是管理员。此外,我已经完全关闭了UAC(User Access Control)(不正确...请参见下一个编辑),就像从Vista升级到Windows 7之前一样。
编辑2:如我在自己的答案中所述,我在关闭UAC后没有重新启动,因此它仍设置为默认值。显然,这会导致访问被拒绝的错误(正如我通过将UAC设置为默认和从不进行测试所证实的那样)。
Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)] on win32
>>> import _winreg
>>> h1 = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE)
>>> key = r'SOFTWARE\Python\PythonCore\2.6\InstallPath'
>>> h2 = _winreg.OpenKey(h1, key, 0, _winreg.KEY_ALL_ACCESS)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
WindowsError: [Error 5] Access is denied
我相当确定这是Windows 7安全模型变化的结果,但是我尝试了各种搜索,迄今为止没有找到可以用作答案的内容。(并不是说这很重要,但为了避免"你为什么要那样做?"的回复,这是一个开发者工具,可以在多个Python安装之间切换注册表,在需要更多控制Python版本和可用包的多项目环境中使用,而不是像virtualenv这样的东西。)
编辑:登录用户是管理员。此外,我已经完全关闭了UAC(User Access Control)(不正确...请参见下一个编辑),就像从Vista升级到Windows 7之前一样。
编辑2:如我在自己的答案中所述,我在关闭UAC后没有重新启动,因此它仍设置为默认值。显然,这会导致访问被拒绝的错误(正如我通过将UAC设置为默认和从不进行测试所证实的那样)。