python - 如何使用 Python 3.x winreg 连接到远程注册表
问题描述
尝试通过python winreg连接到远程计算机的注册表时遇到问题。我正在尝试从注册表中当前登录的用户捕获映射的网络打印机。
我的代码如下:
def enumRegKeySubkeys():
key_path = "Printers\\Connections"
target = r"\\192.168.20.164"
rem_reg = ConnectRegistry(target, HKEY_CURRENT_USER)
rem_key = OpenKey(rem_reg, key_path, 0, KEY_READ | KEY_WOW64_64KEY)
result = []
index = 0
while True:
try:
subkey = EnumKey(rem_key, index)
result.append(subkey)
index += 1
except EnvironmentError:
return result
当我运行它时,我收到错误消息:
回溯(最近一次调用最后)文件“.\test2.py”,第 21 行,在 print(enumRegKeySubkeys()) 文件“.\test2.py”,第 8 行,在 enumRegKeySubkeys rem_key = OpenKey(rem_reg, key_path, 0, KEY_READ | KEY_WOW64_64KEY) FileNotFoundError: [WinError 2] 系统找不到指定的文件
如果我在本地运行它
rem_reg = ConnectRegistry(None, HKEY_CURRENT_USER)
那么就没有问题了,我得到了我想要的。
这一切都发生在 Windows 域环境中,以管理(域)权限运行,并且客户端上的远程注册表服务正在运行。
提前感谢您的帮助!
解决方案
其实ConnectRegistry(target, HKEY_CURRENT_USER)
相当于dos命令reg query \\target\HKEY_CURRENT_USER
,是无效的,因为远程服务器的reg查询只能用于 HKLM
和HKU
在dos窗口中输入reg query /?
,可以看到:
[\\Machine\]FullKey: Machine - Name of remote machine, omitting defaults to the current machine. Only HKLM(HKEY_LOCAL_MACHINE) and HKU(HKEY_USERS) are available on remote machines
推荐阅读
- coq - 不需要在子项上使用“记住”的归纳策略的变体
- java - Java Feign 后备类
- reactjs - Strapi:在反应时触发其他组件
- python - Python - 将小时数转换为日期?
- git - 在 .gitconfig 键中使用非 ASCII 字符是否可行?
- java - 关闭选项卡时返回特定选项卡 - JavaFx
- kubernetes - 将 Kubernetes pod 的日志发送到 Splunk
- algorithm - 查找一组线段中的所有交点?
- pandas - 如何使用 Python 从组合的出现中形成计数矩阵?
- macos - Mac上的docker,在任何目录上安装卷失败“安装被拒绝:EOF”