【问题标题】:Remote windows event logging - Authorization远程 Windows 事件记录 - 授权
【发布时间】:2011-11-09 15:45:49
【问题描述】:

我正在尝试在我的 c# 应用程序中实现一个日志接口,它将事件记录到本地或远程的“Windows 事件日志”中。在本地没有问题,因为 System.Diagnostics 是一个易于使用的命名空间。

但是,在远程机器上执行此操作(登录另一台机器的 Windows 日志)会带来身份验证和授权问题,即“访问被拒绝”。这是可以理解的,因为让每个人都添加日志是不合逻辑的。

我知道创建新的事件文件夹和源只能在本地完成,我已经完成了(我们称之为“我的应用程序”。我还启动了“远程注册表”服务。

为方便起见,我一直在使用“eventcreate”工具测试日志记录功能,以推断什么是允许的,什么是不允许的。在“以管理员身份运行”cmd。

eventcreate /s myLogServer /id 999 /T Error /L "My Application" /so "My Application" /d "Log Test"

这自然会因“错误:访问被拒绝”而失败。当我添加

/u mydomain\myLogServer /p myPassword

,那么它工作正常。但是,我自然不想提供 myLogServer 的管理员凭据。我更喜欢创建一个受限用户,甚至更好,通过客户端机器使用 Windows 身份验证(希望当我不输入任何 /u /p 时会发生这种情况)。

问题:如何设置只有指定的用户才能将日志写入指定的日志文件夹? 尝试设置注册表项的权限(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog..)。 尝试设置事件日志文件(*.evtx)的权限。

子问题:我是否需要在 c# 代码中模拟指定的用户才能获得授权,或者有没有办法将身份验证详细信息添加到 EventLog 对象?

【问题讨论】:

    标签: c# event-log


    【解决方案1】:

    据 TechNet here:

    在 Windows Server® 2003、Windows Vista 和 Windows Server® 2008 中,可以自定义计算机上每个事件日志的权限。此功能在以前版本的 Windows 中不可用。访问控制列表 (ACL) 以安全描述符定义语言 (SDDL) 字符串的形式存储在注册表中每个事件日志的名为“CustomSD”的 REG_SZ 值中。

    【讨论】:

    • 真遗憾,我一直在 Windows 7 机器上测试这些 :)。如果我也能在 Windows 7 上实现这一点,那就太好了。
    • 很确定这也适用于 Windows 7。
    猜你喜欢
    • 2021-08-19
    • 2016-08-08
    • 1970-01-01
    • 2011-12-30
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多