远程 Windows 事件记录 - 授权
Posted
技术标签:
【中文标题】远程 Windows 事件记录 - 授权【英文标题】:Remote windows event logging - Authorization 【发布时间】: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 对象?
【问题讨论】:
【参考方案1】:据 TechNet here:
在 Windows Server® 2003、Windows Vista 和 Windows Server® 2008 中,可以自定义计算机上每个事件日志的权限。此功能在以前版本的 Windows 中不可用。访问控制列表 (ACL) 以安全描述符定义语言 (SDDL) 字符串的形式存储在注册表中每个事件日志的名为“CustomSD”的 REG_SZ 值中。
【讨论】:
真遗憾,我一直在 Windows 7 机器上测试这些 :)。如果我也能在 Windows 7 上实现这一点,那就太好了。 很确定这也适用于 Windows 7。以上是关于远程 Windows 事件记录 - 授权的主要内容,如果未能解决你的问题,请参考以下文章
[MongoDB]------windos远程服务器部署连接
windows服务器下如何修改mysql使mysql允许任何IP远程连接
windows 2008下查看通过远程桌面(mstsc)的连接到本机的连接记录