C# 当应用程序从服务器2008在windows server 2012上运行时,无法写入事件日志

C# 当应用程序从服务器2008在windows server 2012上运行时,无法写入事件日志,c#,.net,windows,C#,.net,Windows,我将在WindowsServer2008(32位)上运行良好的应用程序从Framework3.5升级到WindowsServer2012的4.5(64位)。在应用程序中,有第三方组件在32位上运行。我们无法升级它,因为供应商没有更新它的计划。因此,我的应用程序平台目标是为任何CPU设置的,但在我的项目属性中更喜欢32位。除编写事件日志外,所有功能均正常工作。有没有人能提供解决这个问题的建议?先谢谢你 这是我写事件日志的代码 private static void RecordEventLog(s

我将在WindowsServer2008(32位)上运行良好的应用程序从Framework3.5升级到WindowsServer2012的4.5(64位)。在应用程序中,有第三方组件在32位上运行。我们无法升级它,因为供应商没有更新它的计划。因此,我的应用程序平台目标是为任何CPU设置的,但在我的项目属性中更喜欢32位。除编写事件日志外,所有功能均正常工作。有没有人能提供解决这个问题的建议?先谢谢你

这是我写事件日志的代码

private static void RecordEventLog(string sMessage, EventLogEntryType ErrorType)
    {
        string source = "Testing App";
        string logName = "Application";
        string machineName = ".";
        if (!EventLog.SourceExists(source, machineName))
        {
            EventSourceCreationData sourceData = new EventSourceCreationData(source, logName);
            sourceData.MachineName = machineName;
            EventLog.CreateEventSource(sourceData);
        }
        new EventLog(logName, machineName, source).WriteEntry(sMessage, ErrorType);
    }

问题可能是创建事件源的权限-我不明白为什么32位和64位会有不同。您可能必须以管理员权限运行应用程序(至少第一次)才能创建事件源

发件人:

在Windows Vista及更高版本或Windows Server中创建事件源的步骤 2003,您必须具有管理权限

此要求的原因是所有事件日志,包括 必须搜索安全性,以确定事件源是否为 独一无二。从Windows Vista开始,用户没有访问的权限 访问安全日志;因此,会引发SecurityException

在Windows Vista及更高版本中,用户帐户控制(UAC)决定 用户的权限。如果您是内置的 Administrators组中,将为您分配两个运行时访问令牌:a 标准用户访问令牌和管理员访问令牌。通过 默认情况下,您是标准用户角色。要执行 访问安全日志时,必须首先从 标准用户到管理员您可以在启动 通过右键单击应用程序图标并指示 您想以管理员身份运行。