我已经创建了一个C#应用程序,它在事件查看器中创建自定义日志名称,并将条目写入事件查看器。
我的应用程序在Windows7OS机器上运行良好,但是当我将我的二进制文件复制到另一台Windows2012服务器标准(SP1)机器上时,它就不能工作了。
我运行我的应用程序RunAs管理员,我只看到自定义日志名称,但没有日志记录消息。
我已经在注册表事件日志条目中授予了完全权限,但没有成功。有人能建议我怎么解决这个问题吗?或调试技术来解决此问题。
我已经调试过的代码没有异常,代码运行的很流畅。我的代码非常简单,如下所示:
EventLog.CreateEventSource("MyApp", "TestingApplication")
EventLog.WriteEntry("MyApp", "Testing 123")今天我测试了相同的eventsource和eventlogname,就像下面的EventLog.CreateEventSource("MyApp","MyApp")它在window-2012服务器标准(SP1)中工作得很好,在Win-2012(SP1)中有什么问题吗,或者我错过了什么。
发布于 2014-11-06 03:34:42
即使以管理员身份运行,在Windows Server2008 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> 或者,如果您正在构建一个普通的应用程序,您可以将创建事件源的代码拆分到单独的进程中。然后,您可以检查事件源是否存在,如果存在,只需使用它,如果不存在,则可以运行创建事件源的新流程。
在Process启动信息中,您将需要'runas'动词。
如果你运行的是windows服务,你会受到更多的限制,因为据我所知,这些服务没有能力通过它们的清单直接“提升”特权。
但是,您的服务安装程序可以很好地升级,并且应该在所需的管理员权限下运行,您可以在服务安装程序中创建事件源;然后在服务本身中使用它。
发布于 2016-09-01 03:03:22
我也有同样的问题。我使用的是WinServer 2012r2。日志创建成功,但写入事件出现在应用程序日志中。我读了很多MSDN和论坛,做了所有的事情,但仍然有这个问题。似乎MS在最新的.Net框架中有一个错误,导致所有消息都写入应用程序日志:(
最后,在我重新启动服务器之后,一切都运行得很好。如果使用eventcreate命令行测试一切正常,我不确定为什么需要重启服务器。
发布于 2017-04-25 22:36:39
我通过停止/启动Windows事件日志服务解决了这个问题。我不知道问题出在哪里,但就像Leo说的那样,这可能是个bug。
https://stackoverflow.com/questions/26765385
复制相似问题