【发布时间】: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 对象?
【问题讨论】: