gpt4 book ai didi

c# - Win7 : unregister event log from event source

转载 作者:太空宇宙 更新时间:2023-11-03 14:06:49 25 4
gpt4 key购买 nike

前段时间我按照 MSDN 的例子学习了如何编写一个 windows 服务。它包括以下代码:

    public Monitor_Processes()
{
InitializeComponent();
if (!System.Diagnostics.EventLog.SourceExists("Monitor_Processes"))
{
System.Diagnostics.EventLog.CreateEventSource("Monitor_Processes", "Monitor_Processes_Log");
}
eventLog1.Source = "Monitor_Processes";
eventLog1.Log = "Monitor_Processes_Log";
}

安装正常,但启动服务时出错。当我检查事件日志时,它说:“来源‘Monitor_Processes’未在日志‘Monitor_Processes_Log’中注册。(它已在日志‘应用程序’中注册。)”

我已经将代码更改为如下所示:

    public Monitor_Processes()
{
InitializeComponent();
if (!System.Diagnostics.EventLog.SourceExists("Monitor_Processes"))
{
System.Diagnostics.EventLog.CreateEventSource("Monitor_Processes", "");
}
eventLog1.Source = "Monitor_Processes";
}

但现在,我在尝试启动服务时仍然遇到相同的错误(错误消息仍然指的是“Monitor_Processes_Log”)——即使在卸载和重新启动之后也是如此。

我如何重新开始并将我的源注册到应用程序日志(假设我的服务将成功启动)?

最佳答案

你应该删除源,

System.Diagnostics.EventLog.DeleteEventSource("Monitor_Processes");

作为旁注,我建议您不要尝试检查源是否存在并在您的服务执行期间创建它。 EventLog.SourceExists() 方法需要 Windows 7 和 Windows Server 2008 R2 上的管理权限,因为它会尝试检查安全日志。您应该在 ServiceInstaller 中添加这些检查/创建语句类(class)。

如果可能,不要让您的 Windows 服务需要本地管理员。

编辑:要手动创建事件日志源,您也可以使用 PowerShell。

param (
$logName = "Application",
$source = $(Read-Host -prompt "Enter EventLog source"),
$machineName = ".",
[switch]$verbose
)

function createEventSource() {
if (![System.Diagnostics.EventLog]::SourceExists($source, $machineName)) {
[System.Diagnostics.EventLog]::CreateEventSource($source, $logName, $machineName)
Write-VerboseHost "Created source $source in log $logName."
} else {
Write-VerboseHost "Source $source in log $logName already exists."
}
}

function help() {
"Usage: Create-EventSource -source string [-machineName string] [-verbose]"
exit
}

function Write-VerboseHost($message) {
if ($verbose) {
Write-Host $message
}
}

if (!$source) { help }

关于c# - Win7 : unregister event log from event source,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9119589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com