当我尝试使用表达式形状中的EventLog.WriteEntry("MyEsb", "Msg");
执行编排时,我得到异常The source was not found, but some or all event logs could not be searched. To create the source, you need permission to read all event logs to make sure that the new source name is unique. Inaccessible logs: Security.
为什么?
如果这有任何意义的话,我正在运行Win 7 64bit。
答案 0 :(得分:5)
当您从任何应用程序编写事件日志时,需要已经创建了事件源,或者应用程序本身将在写入之前尝试创建它。不幸的是,创建事件源是一项需要本地管理员权限的操作。
所以你可以做两件事:
预先创建事件源是一个更好的选择。您可以通过powershell命令
执行此操作New-EventLog -LogName "Application" -Source "MyEsb"
答案 1 :(得分:0)
似乎我说明显了但 BizTalk用户有权写入Eventlog?也就是说,运行Orchestration的主机实例的帐户。
你可能会发现它没有。
HTH
答案 2 :(得分:0)
最后我找到了解决方案。正如错误所述,“要创建源,您需要获得读取所有事件日志的权限,以确保新的源名称是唯一的。无法访问的日志:安全性。”所以即使BizTalk用户帐户有有足够的权限写入事件日志,它没有权利在备注部分的注释中按照here所述读取EventLog \ Security日志:
此要求的原因是必须搜索所有事件日志(包括安全性)以确定事件源是否唯一。从Windows Vista开始,用户无权访问安全日志;因此,抛出SecurityException。
所以我刚刚为BizTalk用户授予HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Security
的读访问权,问题就解决了。