收货和QUOT; ...已经被注册..."从EventLog.CreateEventSource即使我检查!EventLog.SourceExists [英] Receiving "...has already been registered..." from EventLog.CreateEventSource even though I'm checking !EventLog.SourceExists

查看:457
本文介绍了收货和QUOT; ...已经被注册..."从EventLog.CreateEventSource即使我检查!EventLog.SourceExists的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的下code失败,......已经被注册为本地计算机上的源,即使我做检查,第一:

My following code fails with "...has already been registered as a source on the local computer" even though I'm doing checks first:

lock ( eventLock )
{
    string eventLog = Constants.EventLogPL;
    string eventSrc = Constants.EventSrcPL;

    if (!EventLog.Exists(eventLog))
    {
        if (!EventLog.SourceExists(eventSrc))
        {
            try
            {
                EventLog.CreateEventSource(eventSrc, eventLog);
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine(e.Message);
            }
        }
    }
}

我还以为我的电话,以!EventLog.SourceExists 就足够了,以prevent我的错误! 我于2010年4 .NET和Windows 7 64编译任何CPU。

I'd have thought my call to !EventLog.SourceExists would have been enough to prevent my error! I'm on 2010 .NET 4 and Windows 7 64 compiling to any CPU.

编辑:更新code获得恒定的当地人,检查他们不改变,并使用锁,以确保只有一个线程可以测试和创建。 code还是失败,出现同样的错误。

Updated code to get Constant's to locals to check they don't change, and use locking to make sure only one thread can test and create. Code still fails with the same error.

推荐答案

挖掘到后发现问题Sysinternals的进程监视器的一点:

调用 EventLog.Exists(MyLog);

日志名称没有找到,如预期:

Logs Name not found, as expected in:

荷航\系统\ CurrentControlSet \服务\事件日志\ MyLog

调用 EventLog.SourceExists(MYSOURCE);

检查几个地方,找不到名称中预期:

Checks several places, name not found in as expected:

HKLM \系统\ CurrentControlSet \服务\事件日志\应用程序\ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\ HardwareEvents \ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\的Internet Explorer \ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\密钥管理服务\ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\媒体中心\ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\ ODIAG \ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\ OSession \ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\安全\ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\ SYSTEM \ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\ VisualSVNServer \ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\ Windows PowerShell中\ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\应用程序\ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\ HardwareEvents \ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\的Internet Explorer \ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\密钥管理服务\ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\媒体中心\ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\ ODIAG \ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\ OSession \ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\安全\ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\ SYSTEM \ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\ VisualSVNServer \ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\ Windows PowerShell中\ MYSOURCE
HKLM \系统\ CurrentControlSet \服务\事件日志\ MyLog

HKLM\System\CurrentControlSet\services\eventlog\Application\MySource
HKLM\System\CurrentControlSet\services\eventlog\HardwareEvents\MySource
HKLM\System\CurrentControlSet\services\eventlog\Internet Explorer\MySource
HKLM\System\CurrentControlSet\services\eventlog\Key Management Service\MySource
HKLM\System\CurrentControlSet\services\eventlog\Media Center\MySource
HKLM\System\CurrentControlSet\services\eventlog\ODiag\MySource
HKLM\System\CurrentControlSet\services\eventlog\OSession\MySource
HKLM\System\CurrentControlSet\services\eventlog\Security\MySource
HKLM\System\CurrentControlSet\services\eventlog\System\MySource
HKLM\System\CurrentControlSet\services\eventlog\VisualSVNServer\MySource
HKLM\System\CurrentControlSet\services\eventlog\Windows PowerShell\MySource
HKLM\System\CurrentControlSet\services\eventlog\Application\MySource
HKLM\System\CurrentControlSet\services\eventlog\HardwareEvents\MySource
HKLM\System\CurrentControlSet\services\eventlog\Internet Explorer\MySource
HKLM\System\CurrentControlSet\services\eventlog\Key Management Service\MySource
HKLM\System\CurrentControlSet\services\eventlog\Media Center\MySource
HKLM\System\CurrentControlSet\services\eventlog\ODiag\MySource
HKLM\System\CurrentControlSet\services\eventlog\OSession\MySource
HKLM\System\CurrentControlSet\services\eventlog\Security\MySource
HKLM\System\CurrentControlSet\services\eventlog\System\MySource
HKLM\System\CurrentControlSet\services\eventlog\VisualSVNServer\MySource
HKLM\System\CurrentControlSet\services\eventlog\Windows PowerShell\MySource
HKLM\System\CurrentControlSet\services\eventlog\MyLog

但是,调用 EventLog.CreateEventSource(MYSOURCE,MyLog);

查找MyLog在以下注册表位置和错误:

Finds MyLog in the following registry location and errors:

HKLM \系统\ CurrentControlSet \服务\事件日志\应用程序\ MyLog

删除HKLM \系统\ CurrentControlSet \服务\事件日志\应用程序\ MyLog,并重新运行固定我的问题!

Removing "HKLM\System\CurrentControlSet\services\eventlog\Application\MyLog" and re-running fixed my problem!

看起来像 .Exists 不看在所有的地方 .CreateEvent 呢!

Looks like the .Exists don't look in all the places .CreateEvent does!

这篇关于收货和QUOT; ...已经被注册..."从EventLog.CreateEventSource即使我检查!EventLog.SourceExists的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆