помогите с модулем winsys - PullRequest
0 голосов
/ 10 июня 2011

Я пытаюсь использовать модуль WinSys для получения журналов событий моей системы (Windows). Но я не знаю, почему не работает следующий код:

from winsys import event_logs
print len (event_logs.event_log ("Application"))

или

for logs in event_logs.event_logs(computer='.'):
    print logs

эти ошибки доходности

Traceback (most recent call last):
  File "Q:\8th sem\python\untitled1.py", line 10, in <module>
    event_logs.event_log("Application")
  File "C:\Python26\lib\site-packages\winsys\event_logs.py", line 376, in event_log
    return EventLog (computer, log_name)
  File "C:\Python26\lib\site-packages\winsys\event_logs.py", line 119, in __init__
    key = registry.registry (self.REG_ROOT % self.computer).get_key (self.name)
  File "C:\Python26\lib\site-packages\winsys\registry.py", line 503, in registry
    return Registry.from_string (root, access=access, accept_value=accept_value)
  File "C:\Python26\lib\site-packages\winsys\registry.py", line 485, in from_string
    hKey, moniker, value = cls._from_string (string, access, accept_value)
  File "C:\Python26\lib\site-packages\winsys\registry.py", line 469, in _from_string
    hRoot = wrapped (win32api.RegConnectRegistry, computer, root)
  File "C:\Python26\lib\site-packages\winsys\exc.py", line 44, in _wrapped
    raise exception (errno, errctx, errmsg)
winsys.registry.x_registry: (53, 'RegConnectRegistry', 'The network path was not found.')

Чего-то мне не хватает?

1 Ответ

0 голосов
/ 10 июня 2011

Как я вижу из документации RegConnectRegistry здесь :

имя_компьютера: строка Имя удаленного компьютера в форме \\ имя_компьютера. Если Нет , местный компьютер используется.

Таким образом, значение имени компьютера по умолчанию "." не может использоваться в этой функции. Похоже, есть ошибка в используемой вами версии Winsys. В моей локальной версии Winsys 0.5.2 (взято из PYPI) проблема, кажется, исправлена.

Вы можете обойти эту проблему, используя следующий код:

import win32api
from winsys import event_logs
moniker = "\\\\%s\\Application" % win32api.GetComputerName()
print len(event_logs.event_log(moniker))
...