我也在微软论坛上问过这个问题,但是还没有答案。
我正在构建 Windows 2012 服务器以替换旧版 Windows 2008 服务器。我正在测试旧版批处理脚本,该脚本在不同情况下记录信息或系统事件。但是,该脚本失败并出现错误"Access is denied"
。
我进行了一些调试,发现失败是出在这EVENTCREATE
行代码上。下面是该命令及其失败的示例:
C:\SCRIPTS>EVENTCREATE /t WARNING /d "testing" /id 411
ERROR: Access is denied.
如果我以我自己(管理员)的身份执行此命令,它会正常工作。但如果其中一个用户执行它,它会失败。
/so
我确实在 Google 上搜索并检查了 stackoverflow 及其姊妹网站,并发现在使用该参数时会报告此类行为。但是我没有使用/so
参数。
我已确认用户有权访问该EVENTCREATE
命令。如果他们使用 调用该命令,/?
他们会看到该命令的帮助内容。
我需要调整某种组策略权限设置吗?还有其他吗?
在此先感谢您的帮助。
答案1
我怀疑这里的问题是您没有使用通常允许您指定事件源的 /so 开关。
由于您未使用该参数,因此实用程序默认将“EventCreate”作为事件源。这意味着实用程序需要在注册表中注册“EventCreate”源,这需要提升权限。运行 eventcreate 的用户可能不具备这些必要的权限。
您是否尝试过以管理员身份在同一台计算机上运行它,然后以用户身份再次运行它?我认为这会起作用。
或者,我也会尝试指定事件源,例如“您的应用程序”,并坚持使用它。事件源“EventCreate”非常通用,我不会使用它。
最后,我推荐这些博客文章来了解事件日志的记录工作原理:
https://www.eventsentry.com/blog/2008/04/event-log-message-files-the-de.html https://www.eventsentry.com/blog/2010/11/creating-your-very-own-event-m.html
答案2
我遇到了同样的问题,我通过以管理员身份打开命令窗口解决了这个问题。只需存在管理员身份不足以执行该命令。右键单击图标并选择“以管理员身份运行”