我们有在多个 2008 R2 系统上运行的 Windows Sensu 客户端。我们的一项检查调用批处理文件来收集一些信息并报告回来。对于这些检查,我们偶尔会收到“未知:意外错误:访问被拒绝 (5)”消息 - 没有标准频率,没有相关性……下一次检查正常运行,没有问题。
我已经通过堆栈和Sensu Ruby 代码跟踪调用)生成 'cmd.exe /c "/path/to/batch.bat parameters"' 的子进程没有问题。我可以通过删除对批处理文件本身的所有 NTFS 访问来重新创建问题。如果您在删除这些权限的情况下运行 cmd /c batch.bat,它将返回相同的“访问被拒绝 (5)”错误。
好的,很好,访问文件时出现问题。为什么?我已经运行了进程监视器跟踪,并且可以发现该进程绝对没有问题:ruby 加载,cmd.exe 被调用,cmd.exe 读取文件时没有可见错误,然后它返回检查,因为访问被拒绝。什么……?
我没主意了。一些额外的背景信息以防万一:ruby 二进制文件以 32 位运行;Sensu 客户端是 Sensuapp 网站的最新客户端;系统正在运行 System Center Endpoint Protection。我错过了什么??