windows-7 – MSMQ问题读取远程私人队列(再次)

好吧我的问题类似于 How to receive message from a private workgroup queue(我基本上使用相同的代码).

我正在使用主机上创建队列

MessageQueue.Create(@".\Private$\MyNewPrivateQueue");

使用打开远程计算机上的队列

var queue = new MessageQueue(@"FormatName:DIRECT=TCP:xxx.xxx.xxx.xxx\PRIVATE$\MyNewPrivateQueue");

使用queue.send()和queue.Receive()写入/读取数据

我有两个系统,我正在尝试.

> Windows 7家庭高级版x64
> Windows XP SP3

当我在W7系统上创建专用队列并尝试编写然后从XP系统读取队列时(根据引用的问题),它在读取操作上失败并显示“消息队列服务不可用”异常.

但是,当我反转系统(在XP系统上创建队列并从W7系统写入/读取,并使用相同的代码)时,它按预期工作.

我已经完成了:

> Reading Messages from Remote Queues
> Understanding how MSMQ security blocks RPC traffic
> Getting MSMQ messages out of Windows Server 2008 remotely
> Clear the way – MSMQ coming through
> MSMQ 3.0 too secure for you?

我也尝试关闭W7和XP防火墙,并给予每个人和他的狗对队列本身的完全权限无济于事.

鉴于它与XP一起作为队列主机,但不与W7作为主机,我认为这是一个安全问题,而不是代码问题.但对于我的生活,我无法看到W7在哪里堵塞.

编辑8/9

好的..添加

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\Security\AllowNonauthenticatedRPC

允许我从远程专用队列中读取消息.但是这似乎不允许使用

GetPrivateQueueByMachine(String machineName)

枚举可用的私有队列.那么这个想法有什么想法吗?

好的..我显然没有阅读所有我需要阅读的内容.答案是:

MSMQ 4.0 – what’s new in Computer Management?

我需要添加一个新的注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\Security\AllowNonauthenticatedRPC

并将值设置为1.

一旦我在W7服务器上执行了此操作,那么我就可以从XP机器上读取队列了.

我是唯一一个认为这是奇怪的人,任何人都可以写入队列,但我不得不将其设置为从队列中读取?这太奇怪了.

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...