0

我在 Windows 8 上执行以下简单代码,为PATH环境变量添加了一些内容。令人惊讶的是,它失败了error 5: access denied。如果SetValueEx指向HKCU而不是HKCU\Environment所有工作正常。我已经检查了权限HKCU并且HKCU\Environment- 它们是相同的并且用户具有完全访问权限。为什么访问被拒绝?

  hKey = _winreg.OpenKey( _winreg.HKEY_CURRENT_USER, 'Environment' )
  for i in itertools.count():
    try:
      sName, sData, nType = _winreg.EnumValue( hKey, i )
      if 'PATH' == sName:
        _winreg.SetValueEx( hKey, 'PATH', 0, nType, os.environ[ 'PATH' ] )
        break
    except WindowsError:
      raise "No 'PATH' in registry"
4

1 回答 1

2

尝试将您的OpenKey呼叫更改为

_winreg.OpenKey(_winreg.HKEY_CURRENT_USER, 'Environment', 0, _winreg.KEY_READ | _winreg.KEY_WRITE)

根据文档,最后一个参数的默认值是只读访问。

于 2013-07-10T17:38:50.600 回答