【问题标题】:Windows Server 2008 won't let me create a log source, telling me it already exists (it does not)Windows Server 2008 不允许我创建日志源,告诉我它已经存在(它不存在)
【发布时间】:2011-10-10 05:44:34
【问题描述】:

我有一个小型 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 对我撒谎?

【问题讨论】:

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


    【解决方案1】:

    本地(或域)管理员不是 Windows 机器上最强大的帐户。

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

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

    此外,在奇怪的地方有一些保留的名称可能会让你感到困惑。创建名称为 CON COM 或 LPT 的文件夹会导致 server 2003 出现奇怪的问题。

    因此,CreateEventSource() 失败的原因也有很多 - 也可以深入研究内部异常,这些异常通常提供关键细节。

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

    【讨论】:

    • 奇怪。我只是再次尝试使用保证唯一的源名称(“Oct12”)并且它有效!我不知道昨晚发生了什么。似乎我认为不存在的来源实际上存在。也许它与相应 Windows 服务的注册名称匹配。这是一个例外:Source PPTConversionService already exists on the local computer. at System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) at System.Diagnostics.EventLog.CreateEventSource(String source, String logName) at EventLogJuicer.Form1.CreateSource()
    • 我刚刚创建的事件日志没有出现在应用程序和服务日志事件日志列表中...正在重新启动服务器管理器...就是这样!它现在正在工作。去图。
    猜你喜欢
    • 2017-08-28
    • 2021-12-22
    • 2013-09-21
    • 2020-01-14
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    相关资源
    最近更新 更多