如何从命令行创建Windows EventLog源?

Vil*_*lx- 161 windows command-line event-log

我正在创建一个ASP.NET应用程序,它将一些东西记录到Windows EventLog.要执行此操作,必须首先创建事件源.这需要管理权限,所以我无法在ASP.NET应用程序中执行此操作.

是否存在与Windows捆绑在一起的可以创建事件日志源的现有命令行应用程序,还是我必须自行推出?

小智 294

试试"eventcreate.exe"

一个例子:

eventcreate /ID 1 /L APPLICATION /T INFORMATION  /SO MYEVENTSOURCE /D "My first log"
Run Code Online (Sandbox Code Playgroud)

这将创建一个在事件日志下命名为事件类型的新事件.MYEVENTSOURCEAPPLICATIONINFORMATION

我认为这个实用程序仅包含在XP之后.

进一步阅读

  • eventcreate在现有源下记录事件,它不会像OP请求的那样从头开始创建新源. (16认同)
  • 你必须右键单击"cmd"并从vista上选择"以管理员身份运行" (13认同)
  • @PaulChavez如果命名源不存在,则创建它. (5认同)
  • 尽管这有效并创建了新的源,但我所有的事件都具有“找不到源myApp的事件ID 0的描述。引发此事件的组件未安装在本地计算机上,或者安装已损坏”,因此我最后编辑注册表 (2认同)

rou*_*tic 174

试试PowerShell 2.0的EventLog cmdlet

为PowerShell 2.0及更高版本投入使用:

  • 这工作正常,只需记住使用提升的权限运行PowerShell. (6认同)
  • 我必须打开和关闭事件查看器才能看到我创建的新日志 (4认同)

Lui*_*cha 43

您还可以使用以下命令使用Windows PowerShell:

if ([System.Diagnostics.EventLog]::SourceExists($source) -eq $false) {
    [System.Diagnostics.EventLog]::CreateEventSource($source, "Application")
}
Run Code Online (Sandbox Code Playgroud)

确保在调用CreateEventSource之前检查源是否不存在,否则将引发异常.

欲了解更多信息:


Nic*_*ton 11

eventcreate2允许您创建自定义日志,而 eventcreate则不会.


CSh*_*per 8

如果有人感兴趣,还可以通过添加一些注册表值来手动创建事件源。

将以下行另存为 .reg 文件,然后双击将其导入注册表:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\YOUR_EVENT_SOURCE_NAME_GOES_HERE]
"EventMessageFile"="C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\EventLogMessages.dll"
"TypesSupported"=dword:00000007
Run Code Online (Sandbox Code Playgroud)

这将创建一个名为 的事件源YOUR_EVENT_SOURCE_NAME_GOES_HERE