所以我的最终目标是在文件更新触发时使用 python 读取特定应用程序的 Windows 事件日志。
这是我的问题,我相信 python 无法访问存储在 C:\Windows\System32\winevt\Logs 中的事件日志。每当我尝试读取文件时,都会出现以下错误:
WindowsError: [Error 2] The system cannot find the file specified
我尝试了各种形式的转义、字符串拆分/连接以及在文件路径上使用引号,但我总是遇到同样的错误。我什至在 python 命令提示符中廉价地使用了 os.system('dir "C:\Windows\System32..."') 命令来列出路径中更高的目录以供日志验证访问,我收到类似的错误最多C:\Windows\System32 目录,该目录会很好地列出。
例子:
C:\Windows\System32\winevt\Logs - File not found
C:\Windows\System32\winevt - File not found
C:\Windows\System32 - Lists files
我知道这些目录存在。所以从这里我想我可以使用 bash 脚本将事件日志复制到一个临时文件夹中供 python 读取。我写了一个真正简单的 bash 脚本,其中包含:
xcopy /Y "C:\Windows\System32\winevt\Logs\XXXXXXX" c:\Temp
(XXXXXXX) 是我要为 python 脚本复制的日志的名称。
bash 脚本本身运行良好,但是当我的 python 脚本调用它时它失败,因为找不到它而拒绝复制文件。我什至尝试使用 py2exe 创建一个 exe,然后以管理员模式运行。这也失败了。找不到文件的类似错误。我不确定我是否理解 python 用来调用脚本的权限以及为什么 bash 脚本即使可以在普通命令提示符下复制文件也无法复制文件。
您可以在我的逻辑中指出的任何建议或缺陷都会很棒。我很困。