我有一台运行一些 MSMQ 公共队列的 XP 机器。Windows 7 客户端无法连接到这些队列,但 Windows XP 客户端可以。当我使用 MSMQ 队列资源管理器程序从 Windows 7 客户端连接时,我收到以下错误消息:
设置新的 XP 机器、在域中注册它、安装队列资源管理器时,一切都运行良好。我还应该注意,我的 Windows 7 机器在连接到运行 MSMQ 的其他 XP 机器时没有问题,只是其中一些(所有机器都运行最新的服务包)。
经过大量调试后,我似乎将问题归结为正在进行的 RPC 调用。使用队列资源管理器和 rpcping 时,我都看到以下问题。下面提供的示例是使用以下命令使用 rpcping:
rpcping -s xp-host-1 -a integrity -u 9 && rpcping -s xp-host-2 -a integrity -u 9
xp-host 1 有问题,xp-host-2 是全新安装的,没有问题。检查来自 wireshark 的数据可获得此视图。很明显,最后进行的 RPC 调用成功了,因为您将看到对第二台主机进行了另外两次调用。
检查数据包没有发现明显差异,但是当使用队列资源管理器对两个不同的服务器(均为 XP)进行检查时,我们发现了差异。这似乎与身份验证/质询/响应或其他东西有关,但我正在努力找出是什么。
有人知道我该如何解决这个问题吗?我尝试过禁用客户端上的不同类型的身份验证类型,但无济于事。我只尝试过 lanman、ntlm v1、ntlm v2 等等。
其他一些事实:
- 事件日志中没有关于此的信息
- MSMQ 错误代码并没有提供太多信息。基本上它们意味着“出了点问题,我们不知道是什么问题”。
- 如果我使用 IP 地址而不是主机名,MSMQ 不会给出错误,但不允许我查看公共队列。
编辑另外1张图片:
看起来是 rpc__mgmt_inq_princ_name 请求造成了问题。在图片左侧,我尝试连接到不工作的主机,在右侧,我连接到正常工作的同一操作系统。
答案1
将 MSMQ 服务设置为以本地服务帐户运行时,问题已得到解决。以前的用户是域管理员帐户。