问题标签 [custom-eventlog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1882 浏览

winapi - EventCreate.exe 创建一个“CustomSource”值,这是什么意思?

命令行EventCreate.exe工具在注册表中注册用户定义的事件源以供 Windows 事件日志查看器使用,如下所示:

图片

我编写了一个应用程序,它有自己的事件日志资源字符串,并根据 MSDN注册为事件源,但它不使用该CustomSource值并且工作正常。

我在 MSDN 或其他在线网站上找不到任何关于CustomSource确切含义的文档。我机器上的注册源都没有使用它。

有谁知道这CustomSource是什么意思,以及它是如何工作的?它只是内部的东西EventCreate.exe,还是 Windows 事件日志实际上将它用于某些东西?

0 投票
1 回答
60 浏览

c# - C#_EventLog 异常

我正在尝试编写一个简单的事件日志,但遇到“System.Security.SecurityException:找不到源...”,我搜索了很多但找不到有效的解决方案,如果有人我真的很感激帮助我,我知道需要创建源并且必须注册密钥,但是密钥是什么,我应该怎么做?

0 投票
0 回答
190 浏览

c# - 无法写入自定义事件日志

我创建了一个简单的 Windows 服务。
该服务注册一个自定义事件源和日志。
出于测试目的,我将日志命名为“asd”,将源命名为“.asd”。
日志和源都已正确创建,服务已正确安装并且运行良好。
但是无法写入日志。没有错误或异常被抛出,只是没有任何反应。
我用的是eventLog.WriteEntry方法,哪里eventLog是服务System.Diagnostics.EventLog组件的名字。
但是,即使我知道该方法已执行,并且至少没有抛出异常,也没有将任何内容写入所述事件日志,因此我推测它已成功完成。
我尝试通过以管理员身份启动 Powershell 并使用Write-EventLogcmdlet,如果写入应用程序日志(使用适当的源),它工作得很好,但如果我使用它写入自定义“asd”日志,则不会发生任何事情 - 即使在刷新或之后,Windows 的事件查看器中也不会出现任何条目重新启动事件查看器。
尝试重新启动 Windows 事件日志服务,但由于还必须重新启动任务计划程序服务而失败,内置管理员帐户无法访问该服务,因为我使用的是 Windows 7,而且它很愚蠢。

能够在几个版本前写入自定义事件日志,但恢复没有修复任何问题,而且我没有进行任何与此相关的更改。

任何我无法写入该日志的帮助或想法将不胜感激!

0 投票
0 回答
392 浏览

c# - 如何允许使用模拟的 WCF Web 服务写入 Windows 事件日志?

我正在编写一个小型 WCF 服务,并且希望能够写入自定义事件日志。我已经创建了一个事件日志和源以及一个最小的服务,并且该服务可以写入日志。然后我添加了模拟并开始在客户端收到“访问被拒绝”错误。在服务器上登录时,它采用“不允许请求的注册表访问”错误的形式。

尽管该服务的用户不会出现这种情况,但被模拟的帐户(必须)是管理员的成员(以便能够使用 IIS 进行调试)。

我在非管理员用户的同一台机器上和非管理员用户的另一台机器上运行 WCF 测试客户端得到相同的结果。

要重新创建:

  1. 以管理员身份启动 PowerShell
  2. New-EventLog -LogName Test42 -Source Test42.Web
  3. 关闭 PowerShell
  4. 以管理员身份启动 Visual Studio
  5. 新项目 - .NET Framework 4.5 > Visual C# > WCF > WCF 服务应用程序“ImpSvc1”(* 为解决方案创建目录)
  6. 将 IService1.cs、Service1.svc 和 Web.config 的内容替换为以下内容。
  7. 在 WCF Project Properties > Web (tab) > Servers - 选择 Local IIS 并单击 Create Virtual Directory。
  8. 构建项目。
  9. 启动 IIS 管理器 - 选择默认网站
  10. 打开 IIS
  11. 您需要一个具有域帐户(在 IIS 机器上没有特殊权限)和集成管道模式的应用程序池,因此如果您没有,请创建一个。
  12. 选择默认网站 > 身份验证。确保启用 Windows 身份验证并禁用所有其他身份验证。
  13. 选择 ImpSvc1 > 基本设置。从上方选择应用程序池。
  14. 关闭 IIS 管理器。
  15. 启动 WCF 测试客户端。文件 > 添加服务 > http://localhost/ImpSvc1/Service1.svc
  16. 双击 GetDate() 方法并单击 Invoke。你应该得到 RESPONSE: user=; dateTime= 和在 Test42 事件日志中创建的事件。
  17. 取消注释 using 语句,构建并重复调用,您应该得到: RESPONSE: user=; dateTime= 和在 Test42 事件日志中创建的事件。
  18. 取消注释 EventLog.WriteEntry 语句,构建并重复调用,您应该在 WCF 测试客户端中收到“访问被拒绝”错误。
  19. 如果您使用调试启动项目,您会看到它是“不允许请求的注册表访问”。

IService1.cs

服务1.svc

网页配置

0 投票
1 回答
136 浏览

vsto - 在没有管理员的情况下写入事件日志

我是本地机器上的管理员。但是,我正在创建的应用程序(Outlook VSTO 插件)将由部署管理员部署给没有管理员权限的用户。

该应用程序安装正确。

我的问题是我有代码可以检查EventLog.SourceExists("my VSTO addin"). 如果没有,它会EventLog.CreateEventSource("my VSTO addin")

我的问题:

  1. 我真的需要创建事件源吗?在没有源的情况下它仍然会记录吗?
  2. 我应该如何创建事件源(如果需要#1)?

2a 也许我需要创建一个创建事件源的小应用程序,并且需要由管理员安装?

2b 也许我可以将它放在安装时将调用的代码中?(我正在使用安装屏蔽)

2c 也许它可以由管理员作为组策略的一部分来完成?

2d 我可以根据https://docs.microsoft.com/en-us/windows/desktop/EventLog/event-sources创建一个注册表项

0 投票
0 回答
1180 浏览

c# - EventLog security.evtx 垃圾邮件是如何发生的?

在 Windows Server 2012 R2 上运行企业应用程序时,系统突然变得非常缓慢:一些巨大的负载正在撞击磁盘。更深入的检查表明 svchost.exe (LocalServiceNetworkRestricted) 不断地以每秒 25Mb 的速度写入 C:\Windows\System32\winevt\Logs\Security.evtx文件。
同时,Windows EventLog 会被大量这样的消息发送垃圾邮件

简单地停止我们的应用程序服务器,确实停止了垃圾邮件,但我们需要该服务器运行。我们已经回滚了企业应用程序中的所有最新代码更改,但它并没有解决问题,也没有减少Security.evtx.

我们还检查了基础设施人员没有重新配置此服务器上的任何设置,尤其是审核策略。(最后一次更改是 1 个月前)。

检查进程,我们发现它不断转向注册表\HKLM\SYSTEM\Services\EventLog\并枚举下面所有的键,它们在 800 左右

然后我们发现审计策略的配置方式是将这些读取中的每一个记录到 EventLog 中。禁用审计策略解决了这个问题。

但问题是:如果没有人更改审计策略配置,怎么会发生这种情况?Windows 没有重新启动,最近没有安装更新。唯一改变的是——部署了最新版本的企业应用程序,日志记录或注册表访问没有任何变化。

这种检查遍历 \HKLM\SYSTEM\Services\EventLog\ 下的所有注册表项是否正常?(不得不提,这段代码已经存在很长时间了)

0 投票
1 回答
337 浏览

c# - 如何将自动注册的 Windows 服务 EventLog 属性注册到除应用程序日志之外的另一个日志?

我目前正在创建 Windows 服务,并且刚刚弄清楚(感谢这个答案)如何配置服务安装程序,以便在安装期间创建自定义事件日志源。正如我自己已经弄清楚的那样,这些自定义事件日志源需要注册提升的权限。这就是在安装过程中发生注册的原因 - 因为服务安装始终以提升的权限执行。到目前为止,一切都很好。

但是,我对该解决方案不是 100% 满意,因为正如以下文档中所述ServiceInstaller

此源的 Log 属性由 ServiceInstaller 构造函数设置为计算机的应用程序日志。

这不是我想要的。我希望将事件注册在名为“MyCustomLog”的自定义日志中。此外,我不能只将我的服务设置ServiceBase.EventLog.Log为“MyCustomLog”。如何单独设置我的服务EventLog.Log?我在哪里必须这样做?

由于我还没有找到我的问题的答案,所以我想为我的服务事件创建一个自定义视图,该视图应该如下所示:

在此处输入图像描述

它不会取代自定义事件日志,因为事件仍注册到应用程序日志中,但它使我能够概览我的服务中发生的某些事件,就像它在自定义事件日志中一样。那么,我如何以编程方式创建这样的自定义视图?那可能吗?如果是这样,我需要在哪里创建它们?创建是否需要提升权限,因此需要在ServiceInstaller? 或者这可以在我的服务的构造函数中轻松完成吗?

我将不胜感激有关这两种方法的可行性的答案!

0 投票
1 回答
332 浏览

python - 如何在 python 中读取“应用程序和服务日志”下的事件日志?

我想使用 win32evtlog 读取“应用程序和服务日志”下的一些事件日志。

我可以阅读属于“系统”、“应用程序”、“安全”和其他标准日志的事件日志。但是当我尝试从“Microsoft-Windows-TerminalServices-LocalSessionManager/Operational”中读取一些日志时,我会得到“应用程序”的日志。

我尝试使用类似这里的东西,但我似乎无法在 python 中做。

我更喜欢使用 pywin32,但这不是必须的。

0 投票
1 回答
136 浏览

.net-core - .Net Core EventLog - 覆盖未处理的异常被写入应用程序日志

我在我的 .Net Core 5.0 应用程序中配置了 EventLog 以将应用程序事件记录到自定义事件日志中:

我在 appsettings 中的日志记录配置:

一切正常,但一些消息(特别是未处理的异常)被写入“应用程序”日志而不是配置 [“EventLogName”] 日志。知道如何配置应用程序以将应用程序中的所有消息记录到 configuration["EventLogName"] 日志吗?非常感谢

0 投票
0 回答
12 浏览

windows - 删除定义过多的损坏事件日志清单

我设法导入了包含太多自定义事件日志定义的损坏清单。我已经将它重构为并验证它可以在其他机器上运行。如何删除旧定义?通常的“嗯”标志没有这样做,谷歌也没有提出任何建议。