【问题标题】:How can I create an event source without elevating privileges?如何在不提升权限的情况下创建事件源?
【发布时间】:2012-12-14 15:08:41
【问题描述】:

我正在开发一个将用作登录脚本的 C# 程序。出于诊断目的,我希望能够写入应用程序日志。不幸的是,我发现的所有文档都指出,如果不查询需要提升权限的安全日志,就不可能创建事件源;对于登录脚本来说,这显然是不行的。

我有什么方法可以在没有此提升请求的情况下创建事件源?或者,是否有其他位置或预先存在的事件源,对我来说用于日志记录可能更有意义?

【问题讨论】:

    标签: windows security logging uac diagnostics


    【解决方案1】:

    在幕后,creating an event source 需要写入 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog 注册表项,该注册表项只能由管理用户写入。因此,任何基于此构建的 API 都需要提升权限。创建事件源将是您在提升后需要做的事情。

    但是一旦你创建了事件源,实际上报告一个事件不需要提升权限。如果您可以运行安装程序,您的安装程序可以请求提升并创建事件源;然后您的应用程序就像任何其他应用程序一样报告事件。但我认为这在登录脚本中是一种不可行的情况。

    【讨论】:

      【解决方案2】:

      我认为你不能没有海拔。也许您可以在注册表中更改一些权限以允许您这样做,但这需要提升,catch 22。

      但是,将日志记录到文本文件并没有错。只要使用该程序的人都知道这是日志所在的位置,那么文本文件也可以正常工作。

      【讨论】:

      • 是的,我希望我可以将所有日志记录在同一个地方,但我认为您对日志文件的建议确实是最好的方法。我现在正在查看 Apache 的 log4net。我想如果我不能标准化写入事件日志,至少我会使用某种标准的日志记录 API 来创建文本文件。
      • +1 -- 而是在这个密闭舱口的另一边。
      猜你喜欢
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多