.net 如何在事件查看器中获取服务

.net 如何在事件查看器中获取服务,.net,windows-services,.net,Windows Services,我创建了一个windows服务。安装服务后,我启动了服务。但是我没有得到我的服务的事件日志 我使用了以下代码 public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); this.ServiceName = ConfigurationManager.AppSettings.Get("ServiceName"); st

我创建了一个windows服务。安装服务后,我启动了服务。但是我没有得到我的服务的事件日志

我使用了以下代码

public partial class Service1 : ServiceBase
{
    public Service1()
    {
        InitializeComponent();
        this.ServiceName = ConfigurationManager.AppSettings.Get("ServiceName");
        string sourceName = ConfigurationManager.AppSettings["Source"];
        string logName = ConfigurationManager.AppSettings["Log"];
        if (!System.Diagnostics.EventLog.SourceExists(sourceName))
            System.Diagnostics.EventLog.CreateEventSource(sourceName, logName);
        eventLog.Source = sourceName;
        eventLog.Log = logName;

    }

    protected override void OnStart(string[] args)
    {
        eventLog.WriteEntry("Service Starting...");
    }

    protected override void OnStop()
    {
        eventLog.WriteEntry("Service Stopped...");
    }
}
我在event viewwe中检查了这个,我没有得到我的服务名称

如何得到这个

谢谢,
Pooja

最可能的原因是服务用户没有足够的权限创建事件源

您需要将try/catch处理程序添加到构造函数中,以确定是否存在这种情况

您还可以尝试以本地管理员用户的身份运行该服务,这将导致创建事件源

由于这个原因,我们总是在安装期间创建事件源,并要求管理员用户运行安装

我们使用的另一个选项是,当我们在创建事件源时遇到安全异常时,优雅地降级为使用应用程序事件日志:

    try {
        if (!System.Diagnostics.EventLog.SourceExists(sourceName))
            System.Diagnostics.EventLog.CreateEventSource(sourceName, logName);
    } catch (SecurityException e) {
        sourceName = "Application";
    }
    eventLog.Source = sourceName;

谢谢你的回复。如何检查我是否有管理权限,如何获得此权限。请查看此MSDN文档。答案因您的操作系统而异: