C# EventLog WriteEntry不在C中写入EventViewer#

C# EventLog WriteEntry不在C中写入EventViewer#,c#,C#,我已经创建了一个C#应用程序,它在事件查看器中创建自定义日志名,并将条目写入事件查看器 我的应用程序在Windows-7操作系统机器上运行良好,但当我将二进制文件复制到另一台Windows-2012 server standard(SP1)机器上时,它无法工作 我以管理员身份运行应用程序,只看到自定义日志名,而没有看到日志消息 我已在注册表事件日志项中授予完全权限,但运气不佳。 有人能给我建议如何解决这个问题吗。或使用调试技术来解决此问题 我调试过的代码没有异常,代码运行顺利。 我的代码非常简单

我已经创建了一个C#应用程序,它在事件查看器中创建自定义日志名,并将条目写入事件查看器

我的应用程序在Windows-7操作系统机器上运行良好,但当我将二进制文件复制到另一台Windows-2012 server standard(SP1)机器上时,它无法工作

我以管理员身份运行应用程序,只看到自定义日志名,而没有看到日志消息

我已在注册表事件日志项中授予完全权限,但运气不佳。 有人能给我建议如何解决这个问题吗。或使用调试技术来解决此问题

我调试过的代码没有异常,代码运行顺利。 我的代码非常简单,如下所示:

EventLog.CreateEventSource("MyApp", "TestingApplication")
EventLog.WriteEntry("MyApp", "Testing 123")
今天,我使用相同的eventsource和eventlogname进行了测试,如下所示 CreateEventSource(“MyApp”、“MyApp”)
它在Windows-2012服务器标准(SP1)中运行良好,在Win-2012(SP1)中是否存在任何问题,或者我是否遗漏了任何内容。

即使在以管理员身份运行时,在Windows server 2008 R2中,它默认为没有提升的权限。您需要提升权限才能创建源。创建源代码后,应该允许您对其进行写入

有几种方法可以解决此问题,如果您正在构建实际的应用程序,可以修改应用程序清单以要求提升的权限和管理权限:

<?xml version="1.0" encoding="utf-8" ?> 
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" 
    xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" 
    xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <assemblyIdentity version="1.0.0.0" name="MyApplication" />
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
            <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
                <requestedExecutionLevel level="requireAdministrator" 
        uiAccess="false" />
            </requestedPrivileges>
        </security>
    </trustInfo>
</asmv1:assembly>  

或者,如果您正在构建一个普通的应用程序,也可以将代码拆分为一个单独的进程来创建事件源。然后,您可以检查事件源是否存在,如果存在,就使用它,如果不存在,您可以运行创建事件源的新进程

过程中
开始信息中,您需要
运行方式
动词

如果您运行的是windows服务,您会受到更多的限制,因为据我所知,服务不具备通过其清单直接“提升”权限的能力


但是,您的服务安装程序可以很好地升级,并且应该在所需的管理员权限下运行,您可以在服务安装程序中创建事件源;然后在服务本身中使用它。

我遇到了完全相同的问题。我正在使用WinServer 2012r2。已成功创建日志,但写入事件显示在应用程序日志中。我读了很多MSDN和论坛,做了很多书上的事情,但仍然有这个问题。似乎MS在最新的.Net framework中有一个bug,导致所有消息都进入应用程序日志:(


最后,在我重新启动服务器后,一切正常。如果使用eventcreate命令行进行测试,我不确定为什么我需要重新启动服务器一切正常。

我通过停止/启动Windows事件日志服务解决了这个问题。我不知道是什么问题,但正如Leo所说,这可能是一个错误。

尝试搜索SO或Internet for Hi Brian,EventLog名称是在EventViewer中创建的,因此大多数情况下不会出现特权提升问题,即使我尝试了你的建议,但效果也不好。但今天我尝试使用相同的源和日志名称,如下面的EventLog.CreateEventSource(“MyApp”,“MyApp”),它在Windows 2012标准服务器中工作Win-2012服务器(SP1)有问题吗。或者我遗漏了什么吗?如果我遗漏了什么,请告诉我。这也可能是一个评论,不是吗?是的,你是对的,但堆栈溢出不允许我对Leo的答案发表评论,所以我只是认为我的答案可能会对这次讨论有所帮助。这对我很有用。我有一个类似的问题——无法写入应用程序事件日志服务器2012 R2上的om PowerShell,即使在成功添加源之后也是如此。重新启动Windows事件日志服务并开始写入事件。然后重新启动事件查看器,以清除事件描述中的“无法找到描述”和“句柄无效”垃圾。