我正在使用 .Net Framework 4.7.2 在 Windows Server 2019 上测试 ASP.NET 应用程序。IIS 应用程序设置为模拟没有管理权限的用户。
EventLog.SourceExists
在尝试创建新源之前,应用程序调用以检查事件日志源是否存在。我了解此方法需要管理权限才能在现有事件日志中搜索源 [1]。实现此目的的另一种方法是,我明确授予我的用户对注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog
和所有子项的读取权限。
这适用于 Windows Server 2019(2016、2012 R2、2018)之前的版本。
测试时,相同的应用程序在 Windows Server 2019 上失败,但有例外。
未找到源,但无法搜索部分或全部事件日志。无法访问的日志:状态。
运行 procmon 时,我在尝试打开“状态”事件日志的注册表项时看到拒绝访问HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\State
“State”注册表项对于 Windows Server 2019 来说是新的。它也受到保护 - 它由 SYSTEM 拥有,并且管理员仅限于只读。尝试授予我的用户读取权限时,我得到拒绝访问。结果,我以非管理员用户身份运行的应用程序Inaccessible logs: State
在调用 EventLog.SourceExists 时失败。
我意识到我可以拥有State
注册表项并添加我的用户。但是,在我这样做之前,我想看看是否有人知道 Windows Server 2019 中的这个新注册表项(事件日志)。
谢谢。