如何使用Windows Server 2016上的本地帐户获得对安全事件日志的完全读取访问权限



我有一个应用程序,它在2016 Windows Server v1607的事件日志中创建新的事件源。目前还不知道消息来源会有哪些名字。要对此进行存档,帐户需要对所有事件源进行读取访问,以确保源名称不存在(为什么不同日志中不允许使用双重源名称是另一个有趣的问题(。默认情况下,本地帐户被阻止读取安全事件日志,因此创建新源时会出现错误,即无法读取安全日志。

最有希望的方法似乎是回答这个问题:https://stackoverflow.com/a/3138269/2091030

我按照步骤1-5通过添加本地帐户的读取权限来更改HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security的注册表权限。我检查了Security文件夹中的所有子密钥,它们都显示了该帐户的正确读取权限。尽管如此,我现在在使用一个简单的C#程序添加一个新来源的事件时遇到了另一个错误:

using System;
using System.Diagnostics;
namespace EventlogTest {
public class Test {
public static void Main() {
var log = new EventLog("SomeLog", ".", "SomeNewSource");
log.WriteEntry("Test 123", EventLogEntryType.Information);
}
}
}
System.Security.SecurityException: Der angeforderte Registrierungszugriff ist unzulässig.
bei System.ThrowHelper.ThrowSecurityException(ExceptionResource resource)
bei Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable)
bei System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData)
bei System.Diagnostics.EventLogInternal.VerifyAndCreateSource(String sourceName, String currentMachineName)
bei System.Diagnostics.EventLogInternal.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData)
bei System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type)
bei EventlogTest.Test.Main()

我错过什么了吗?

本地帐户的以下设置允许我在事件日志中添加新的源"MyLog":

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog:

  • 添加具有以下权限的本地帐户:查询值、设置值、创建子密钥、枚举子密钥

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security:

  • 此文件夹不继承其父文件夹的权限。添加具有正常读取访问权限的本地帐户

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\MyLog:

  • 停用继承和复制值,然后添加具有完全访问权限的本地帐户

相关内容

  • 没有找到相关文章