我有一个小的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会骗我吗?
答案 0 :(得分:0)
本地(或域)管理员不 Windows框中最强大的帐户。
还有其他帐户具有更高(但也更有限)的访问权限。
SourceExists()
如果退出则返回false,但您没有访问权限知道它,并且管理员完全有可能被拒绝访问某些内容。
此外,还有奇怪的地方的保留名称,可以绊倒你。创建名称为CON COM或LPT的文件夹,用于在服务器2003上导致奇怪的问题。
因此,还有很多原因可以解释为什么CreateEventSource()可能会失败 - 同时深入研究内部异常,通常那些提供关键细节。
哪个事件日志源名称失败了?
你会发布异常堆栈吗?