Get-Winevent:如何获得正确的SecurityDesciptor? (customSD)

问题描述:

我试图获取系统和应用程序事件日志的安全描述符,看看它是否正确。当您将其更改为自定义设置时,该设置将在注册表项customSD中进行设置。问题是,它似乎得到-Winevent只返回channelAccess的默认设置,并忽略任何customSD(这种行为发生在Windows 2016服务器)Get-Winevent:如何获得正确的SecurityDesciptor? (customSD)

这样做:

$log = Get-WinEvent -ListLog "system" 
$log.SecurityDescriptor = $SecurityDescriptor 
$log.SaveChanges() 

可以正确地创建下customSD注册表项HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ EventLog \ System,它包含正确的新的SDDL字符串。

但随后,运行以下命令:

$log = Get-WinEvent -ListLog "system" 
$log.SecurityDescriptor 

这将返回默认channelAccess SDDL,完全无视customSD关键。因此,它无法验证SDDL是否已成功应用(读取Reg键不是一个选项,因为我们想在DSC中使用它,而DSC使用Get-Winevent cmdlet,而且它也不能在DSC中使用因为验证变更的测试总是失败)

任何想法是怎么回事?

我不知道为什么Get-WinEvent不提供更新的值,但可以使用DSC Registry resource来检查注册表值而不是Get-WinEvent。

+0

我想是的。这意味着不会使用xWinEventLog来设置事件日志安全性,但由于它不能像预期的那样工作,因此直接修改注册表将是一种解决方法。 – Kinwolf