Python:在 Windows 7 上使用 _winreg 编辑注册表值时出现 WindowsError

标签 python windows-7 registry winreg

我正在尝试执行 this script由 Ned Batchelder 在 Windows 上的两个 Python 安装之间切换 .py 文件关联。此 Python 脚本使用 _winreg模块(Python 3.x 中的 winreg)来编辑某些 Registry 值(修改的路径和值对可以在 todo 列表中看到脚本)。

我按如下方式执行这个脚本:

> SwitchPy.py "C:\Program Files\Python26"

我收到以下错误:

Traceback (most recent call last):
  File "C:\Users\SuperUser\SwitchPy.py", line 30, in <module>
    key = reg.OpenKey(classes_root, path, 0, reg.KEY_SET_VALUE)
WindowsError: [Error 5] Access is denied

我猜想可能是账号权限的问题。但是,请注意:

  • 上面使用的帐户是 Administrators 组的一部分,具有管理员权限。

  • 使用上述帐户,我可以执行 regedit.exe 并手动设置脚本中列出的值,而不会遇到任何权限或访问问题。

我正在使用 Windows 7 并且是域的一部分。这可能与这个问题有关吗?

有人知道这个错误吗?如何运行此脚本?

最佳答案

当我尝试那个时,我在 Python.CompiledFile 上收到“找不到路径”错误。

我在我的注册表中检查过它,它不存在,但不是 Windows 7。

所以,我删除了 Python.CompiledFile 的那几行,它在这里运行良好,或者

您可以将 try: except: 放在 OpenKey 和 SetValue 上,但这不是个好主意。

关于Python:在 Windows 7 上使用 _winreg 编辑注册表值时出现 WindowsError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1845650/

相关文章:

asp.net - IIS 7.5 中 Asp.net Web 服务的注册表访问

python - 在 Ubuntu Linux 上安装 pjproject 时出错

python - 如何构建相互构建的 Nose 单元测试?

c# - MSMQ + C#,接收带有编码 byte[] 正文的消息在 Windows 7 和 Windows XP 上的行为不同

Java Sound API 用于访问 Vista 和 Win 7 中的系统/主音量控制

c++ - 在 Windows Vista 中写入注册表

batch-file - 为什么其他文件夹路径也使用 SetX 添加到系统 PATH 而不仅仅是指定的文件夹路径?

python - 使用reduce在python中乘以成对元素

c# - 有没有办法将 C# 序列化对象读入 Python?

c# - 控制台应用程序在 visual studio 中打开后立即关闭