Хорошо, моя проблема похожа на Как получить сообщение из очереди частной рабочей группы (и я в основном использую тот же код).
Я создаю очередь на хост-машине с помощью
MessageQueue.Create(@".\Private$\MyNewPrivateQueue");
Открытие очереди на удаленной машине с помощью
var queue = new MessageQueue(@"FormatName:DIRECT=TCP:xxx.xxx.xxx.xxx\PRIVATE$\MyNewPrivateQueue");
И запись / чтение данных с помощью queue.send () и queue.Receive ()
У меня есть два системы, с которыми я экспериментирую.
Когда я создаю частную очередь в системе W7 и пытаюсь записать, а затем прочитать очередь из системы XP (согласно указанному вопросу), она терпит неудачу. Исключение «Служба очереди сообщений недоступна» в действии чтения.
Однако, когда я реверсирую системы (создаю очередь в системе XP и пишу / считываю из системы W7, используя тот же код), он работает , как ожидалось.
Я проработал:
Я также пытался отключить брандмауэры W7 и XP и безрезультатно давал каждому человеку и его собаке полные права доступа к самим очередям.
Учитывая, что он работает с XP в качестве хоста очереди, но не с W7 в качестве хоста, я предполагаю, что это проблема безопасности, а не проблема кода. Но хоть убей не вижу, где в W7 завал.
РЕДАКТИРОВАТЬ 8/9
ОК .. добавление
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\Security\AllowNonauthenticatedRPC
Разрешило мне читать сообщения из удаленной частной очереди. Однако это не позволяет использовать
GetPrivateQueueByMachine(String machineName)
для перечисления доступных частных очередей. Есть какие-нибудь идеи по этому поводу?