我正在开发一个将用作登录脚本的C#程序。出于诊断目的,我希望能够写入应用程序日志。不幸的是,我发现的所有文档都指出,如果不查询安全日志就不可能创建事件源,这需要权限提升;对于登录脚本来说,这显然是不可取的。
有没有办法让我在没有此提升请求的情况下创建事件源?或者,是否有其他位置或预先存在的事件源,我可能更有意义用于记录目的?
答案 0 :(得分:1)
我认为你不能没有提升。可能有一些权限你可以在注册表中更改以允许你,但这需要提升,捕获22。
但是,记录到文本文件没有任何问题。只要使用该程序的人知道这是日志的位置,那么文本文件也可以正常工作。
答案 1 :(得分:1)
在幕后,creating an event source要求写入HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog
注册表项,该注册表项只能由管理用户写入。因此,构建在此之上的任何API都需要提升权限。在升级之后,您需要创建事件源。
但是,一旦您创建了事件源,实际上报告事件不需要提升权限。如果您可以运行安装程序,则安装程序可以请求提升并创建事件源;然后您的应用程序只报告任何其他应用程序的事件。但我认为这在登录脚本中是一种禁忌的情况。