Python 如何使用PyWin32为所有用户获取事件?
我正在尝试创建一个python应用程序,它可以使用事件查看器检测启动、关闭、BSOD、Windows Update等事件,并将它们写入文件 但是,我发现我没有得到所有事件,也没有得到我要查找的事件(例如,事件ID 6005和6006-服务启动和关闭) 经过一些调试,我发现我只检索“用户”是“系统”的事件。如何更改此选项以从所有用户检索事件 以下是我目前的代码:Python 如何使用PyWin32为所有用户获取事件?,python,python-3.x,pywin32,Python,Python 3.x,Pywin32,我正在尝试创建一个python应用程序,它可以使用事件查看器检测启动、关闭、BSOD、Windows Update等事件,并将它们写入文件 但是,我发现我没有得到所有事件,也没有得到我要查找的事件(例如,事件ID 6005和6006-服务启动和关闭) 经过一些调试,我发现我只检索“用户”是“系统”的事件。如何更改此选项以从所有用户检索事件 以下是我目前的代码: import win32evtlog, win32evtlogutil computer = None # Work on the l
import win32evtlog, win32evtlogutil
computer = None # Work on the local machine only
logType = "System"
verbose = False
h=win32evtlog.OpenEventLog(None, logType)
numRecords = win32evtlog.GetNumberOfEventLogRecords(h)
numRead = 0
numFiltered = 0
print("Number of Records " + str(numRecords))
f = open("evts.txt", "a")
while 1:
objects = win32evtlog.ReadEventLog(h, win32evtlog.EVENTLOG_BACKWARDS_READ|win32evtlog.EVENTLOG_SEQUENTIAL_READ, 0)
if not objects:
break
for object in objects:
event_id = object.EventID
if event_id > 2000 and event_id < 6006:
msg = win32evtlogutil.SafeFormatMessage(object, logType)
f.write(str(object.EventID) + "\t| " + str(object.EventType) + "\t| \n" + msg)
numFiltered = numFiltered + 1
numRead = numRead + len(objects)
print("Number of events read: " + str(numRead))
print("Number of filtered events: " + str(numFiltered))
f.close()
导入win32evtlog,win32evtlogutil
计算机=无#仅在本地计算机上工作
logType=“系统”
冗长=错误
h=win32evtlog.OpenEventLog(无,日志类型)
numRecords=win32evtlog.GetNumberOfEventLogRecords(h)
numRead=0
numFiltered=0
打印(“记录数”+str(numRecords))
f=打开(“evts.txt”,“a”)
而1:
objects=win32evtlog.ReadEventLog(h,win32evtlog.EVENTLOG_向后_读取| win32evtlog.EVENTLOG_顺序_读取,0)
如果不是对象:
打破
对于对象中的对象:
event_id=object.EventID
如果事件id>2000且事件id<6006:
msg=win32evtlogutil.SafeFormatMessage(对象,日志类型)
f、 写入(str(object.EventID)+“\t |”+str(object.EventType)+”\t |\n“+msg)
numFiltered=numFiltered+1
numRead=numRead+len(对象)
打印(“读取的事件数:+str(numRead))
打印(“过滤事件数:+str(numFiltered))
f、 关闭()
此代码的输出仅返回ID为4000和4001的事件,但我可以在Windows事件查看器中看到更多内容
附言:
- 在Windows 10中以管理员身份运行脚本似乎无法解决此问题
- 我在虚拟环境中使用Windows10上的Python3.7.5(64位)