我的问题与Windows事件日志的写入权限有关。
我环顾了几篇有关此问题的文章,并找到了解决我的问题的方法,但是这些方法都不适合我当前的情况。

我在.NET 4.0中使用C#。我使用EventLog类:
EventLog class

简而言之,我需要查看是否有一种方法可以用经过身份验证的用户和密码来进行模拟或身份验证,以达到我需要写入事件日志的权限。该服务器将始终位于Windows Server家族中,但是版本可能会有所不同。

我的应用程序是运行以下帐户之一的Windows服务:

  • 网络服务
  • 本地服务
  • 本地系统
  • 具有受限权限的用户(用户或
    域用户组)

  • 这是我有的其他一些标准:
  • 我不能将服务用户设置为管理员,甚至不能将本地用户设置为服务器
  • 我无法编辑或更改注册表
  • 我无法更改服务器上的UAC或任何组策略
  • 我有一个具有管理员权限的用户,但是它不能用于运行服务
  • 事件日志将始终是本地事件日志,而不是在远程计算机上
  • 日志可能永远是“应用程序”日志
  • 来源可能有所不同,这似乎是
  • 问题的核心

    我的问题是:这完全可能吗?

    我可以在我的代码中模拟一个用户来实现我所需要的吗?
    在连接到Web服务,登录到smtp服务器并当然登录到数据库等时,我会这样做。

    我偶然发现了这个类:
    EventLogPermission Class

    但是我似乎对如何使用该类没有一个好的概念。

    我希望我已经很好地表达了我的问题。由于我的标准,我不认为这是另一篇文章的副本。

    最佳答案

    默认情况下,任何经过身份验证的用户都可以写入应用程序事件日志。但是,只有管理员可以创建新的事件源。如果在安装服务时已知所有事件源,建议您提前注册这些源,然后就可以完成所有工作。注册是对EventLog.CreateEventSource的简单调用。

    如果需要事件源更多的灵活性,可以自定义权限。可以通过调整注册表项来自定义这些默认值:

      HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog\Application\CustomSD
    

    KB Article中描述的过程。 Server 2008及更高版本上提供的wevtutil工具是OS的一部分,与通过regedit相比,它更容易一些。

    关于c# - EventLog写入权限,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14245345/

    10-11 22:25
    查看更多