3

我正在尝试使用 Pythons (2.7) 将数据写入 Windows 7 上的系统日志logging.handlers.NTEventLogHandler。这不起作用,因为显然有一些注册表访问被拒绝。该软件将在没有任何特殊访问权限的情况下运行。有什么办法可以使这项工作?

这是我得到的例外:

Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import logging
>>> from logging import handlers
>>> syslog = handlers.NTEventLogHandler("Something")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\Python27\lib\logging\handlers.py", line 917, in __init__
    self._welu.AddSourceToRegistry(appname, dllname, logtype)
  File "c:\Python27\lib\site-packages\win32\lib\win32evtlogutil.py", line 35, in
 AddSourceToRegistry
    "SYSTEM\\CurrentControlSet\\Services\\EventLog\\%s\\%s" % (eventLogType, app
Name))
pywintypes.error: (5, 'RegCreateKey', 'Access is denied.')
4

2 回答 2

0

在 Windows 上使用 sysLog 需要“Python 的 Win32 扩展”。你确定你已经安装了吗?[1]

来自文档 [2]:位于 logging.handlers 模块中的 NTEventLogHandler 类支持将日志消息发送到本地 Windows NT、Windows 2000 或 Windows XP 事件日志。在使用它之前,您需要安装 Mark Hammond 的 Python Win32 扩展。

[1] http://sourceforge.net/projects/pywin32/

[2] http://docs.python.org/2/library/logging.handlers.html

于 2014-02-11T14:35:25.793 回答
0

在我的情况下,答案是为我的帐户调整 regedit 中的权限。在我的情况下,记录到应用程序事件日志,我必须添加完全控制权限

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog\Application

仅设置读取权限不起作用,因为授权用户 ACE 已经设置了该权限。此外,每次执行都必须保持设置权限(这不仅仅是一次设置)。

或者,如果您可以仅以管理员身份运行代码,您将避免此错误,因为管理员组已经对这些密钥具有完全控制权。

于 2019-08-13T16:50:28.147 回答