1

我有以下在 Windows Server 2003 中运行良好的代码。它写入 EventViewer 中的应用程序事件日志。相同的代码在 Windows 2008 中不起作用。应用程序崩溃。请求有关如何在 Windows Server 2008 中写入事件日志的帮助。

if (!EventLog.SourceExists("MyServiceLog"))
{
    EventLog.CreateEventSource("MyServiceLog", "Application");
}
//Create an EventLog instance and assign its source.
EventLog eventLog = new EventLog();
eventLog.Source = "MyServiceLog";
//Write an informational entry to the event log.
eventLog.WriteEntry(Header + ": " + FailureReason);
4

3 回答 3

4

您需要成为本地管理员组的成员才能创建新的事件源。源可能存在于 Server 2003 上,或者您已经拥有该操作系统所需的权限。在 Server 2008 上,即使您是管理员,默认情况下也无需提升权限即可运行。在这种情况下,您必须右键单击您的应用程序并选择“以管理员身份运行”。

于 2010-10-02T12:22:19.513 回答
2

它与 Windows 2008 中的新权限集有关,并且您的帐户没有创建新事件日志源的特权访问权限。

当您为应用程序创建安装程序时,最好创建这些事件日志源,因为通常您必须以特权运行安装程序。

于 2010-10-03T04:24:11.043 回答
0

重新“应用程序崩溃” - 这不应该发生在托管环境中。也许在这种情况下它与权限相关,但是除非您添加逻辑来处理错误(即异常),否则您将永远处于黑暗中并重新启动您的应用程序。

将此更改为

try 
{ 
    /* put your event log code here */ 
} 
catch (Exception e) 
{ 
    /* new code to gracefully handle errors */ 
}

并查看 Exception 类和字段(例如e.Message, e.StrackTrace),您将准确找出问题所在以及发生的位置。

于 2010-10-02T14:55:57.770 回答