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