Ошибка MSMQ при чтении удаленных частных очередей (снова)

Хорошо, моя проблема похожа на Как получить сообщение из очереди частной рабочей группы (и я в основном использую тот же код).

Я создаю очередь на хост-машине с помощью

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

Открытие очереди на удаленной машине с помощью

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

И запись / чтение данных с помощью queue.send () и queue.Receive ()

У меня есть два системы, с которыми я экспериментирую.

  1. Windows 7 Home Premium x64
  2. Windows XP SP3

Когда я создаю частную очередь в системе W7 и пытаюсь записать, а затем прочитать очередь из системы XP (согласно указанному вопросу), она терпит неудачу. Исключение «Служба очереди сообщений недоступна» в действии чтения.

Однако, когда я реверсирую системы (создаю очередь в системе XP и пишу / считываю из системы W7, используя тот же код), он работает , как ожидалось.

Я проработал:

  1. Чтение сообщений из удаленных очередей
  2. Понимание того, как безопасность MSMQ блокирует трафик RPC
  3. Удаленное получение сообщений MSMQ из Windows Server 2008
  4. Расчистите путь - MSMQ проходит
  5. MSMQ 3.0 слишком безопасен для вас?

Я также пытался отключить брандмауэры W7 и XP и безрезультатно давал каждому человеку и его собаке полные права доступа к самим очередям.

Учитывая, что он работает с XP в качестве хоста очереди, но не с W7 в качестве хоста, я предполагаю, что это проблема безопасности, а не проблема кода. Но хоть убей не вижу, где в W7 завал.

РЕДАКТИРОВАТЬ 8/9

ОК .. добавление

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

Разрешило мне читать сообщения из удаленной частной очереди. Однако это не позволяет использовать

GetPrivateQueueByMachine(String machineName)

для перечисления доступных частных очередей. Есть какие-нибудь идеи по этому поводу?

8
задан Community 23 May 2017 в 12:00
поделиться