Windows Server 2008不会让我创建一个日志源,告诉我它已经存在(它没有)

时间:2011-10-10 05:44:35

标签: windows-server-2008-r2 event-log custom-eventlog

我有一个小的winforms应用程序,可以创建一个新的事件日志源。

我以管理员的身份运行以获取提升的权限。

代码检查以确保指定的事件日志不存在,然后创建源。这在我的Windows 7机器上运行良好,但是当我在Windows Server 2008 R2 SP1上运行该应用程序时,它告诉我源已经存在。我知道这不是因为a)这是Windows Server 2008 R2的全新安装,并且b)我添加了代码以返回所有日志源的列表,而我的新日志源不在列表中。

我知道“前8个字符”是重要字符,我确保我的源名称是完全独特的。

这是超级简单的代码(当然我已尝试/捕捉到这个):

if (!EventLog.SourceExists(sourceName))
{
    EventLog.CreateEventSource(sourceName, logName);
}

有人能告诉我为什么Windows Server 2008会骗我吗?

1 个答案:

答案 0 :(得分:0)

本地(或域)管理员 Windows框中最强大的帐户。

还有其他帐户具有更高(但也更有限)的访问权限。

SourceExists()如果退出则返回false,但您没有访问权限知道它,并且管理员完全有可能被拒绝访问某些内容。

此外,还有奇怪的地方的保留名称,可以绊倒你。创建名称为CON​​ COM或LPT的文件夹,用于在服务器2003上导致奇怪的问题。

因此,还有很多原因可以解释为什么CreateEventSource()可能会失败 - 同时深入研究内部异常,通常那些提供关键细节。

哪个事件日志源名称失败了?
你会发布异常堆栈吗?