C# 将windowsEventLog部分复制到定义位置的方法?(证券交易委员会,应用程序,系统)

C# 将windowsEventLog部分复制到定义位置的方法?(证券交易委员会,应用程序,系统),c#,powershell,event-log,C#,Powershell,Event Log,我需要创建三个独立的evtx文件,其中包含在每个事件日志(安全、应用程序、系统)中发现的过去X天的所有事件,并将这些文件保存在定义的位置。 我正在使用c#实现该功能。还可以执行powershell脚本/bat文件。如果管理权限是一个问题,那么是否可以仅对应用程序和系统执行此操作 据我了解: 如果不更改注册表,则无法在自定义位置创建事件日志 如果没有管理权限,则无法在默认位置创建事件日志,因为要创建新的事件日志文件,需要确保事件日志不存在,并且无法访问安全事件日志进行检查。 异常消息: 找不到源,

我需要创建三个独立的evtx文件,其中包含在每个事件日志(安全、应用程序、系统)中发现的过去X天的所有事件,并将这些文件保存在定义的位置。 我正在使用c#实现该功能。还可以执行powershell脚本/bat文件。如果管理权限是一个问题,那么是否可以仅对应用程序和系统执行此操作

据我了解:

  • 如果不更改注册表,则无法在自定义位置创建事件日志
  • 如果没有管理权限,则无法在默认位置创建事件日志,因为要创建新的事件日志文件,需要确保事件日志不存在,并且无法访问安全事件日志进行检查。 异常消息: 找不到源,但无法搜索部分或所有事件日志。若要创建源,您需要读取所有事件日志的权限,以确保新的源名称是唯一的。不可访问的日志:安全性
  • 使用file.Create方法(字符串)创建evtx文件,并使用file.WriteAllText方法(字符串)写入evtx文件, 字符串)也是不可能的

  • 我也尝试过用powershell脚本来完成所有这些,但我几乎遇到了同样的问题$foo=Get EventLog System-after(Get Date).addays(-3)-asbaseobject

    查看这个非常有用的cmdlet,我认为它应该是Windows自带的,由Jeffrey Patton在TechNet上发布

    它为您提供了一个可以运行的新函数,名为导出事件日志,它甚至允许您指定自定义位置!它甚至可以在远程计算机上运行

    Export-EventLogs -ComputerName $computerName -Credential (Get-Credential) -LogName Application -Destination 'C:\LogFiles1\Application.evtx' 
    

    我下载了这个,但无法执行脚本,因为它没有数字签名。目前也无法查询日志(最近x天)。我们明天还要进一步调查。