Я установил MSMQ и MSMQ AD Integration на контроллере домена, на котором также размещен сервер Exchange. Весь код был успешно использован на других контроллерах домена (ни на одном из которых нет сервера Exchange; я искренне надеюсь, что причина не в этом!).
Поскольку требуется на контроллере домена, я использовал следующий код, чтобы позволить учетной записи сетевой службы создавать очереди:
SecurityIdentifier sidNetworkService = new System.Security.Principal.SecurityIdentifier("S-1-5-20");
ActiveDirectoryAccessRule NewRule = new ActiveDirectoryAccessRule(sidNetworkService, ActiveDirectoryRights.CreateChild, AccessControlType.Allow, new Guid("9a0dc344-c100-11d1-bbc5-0080c76670c0"), ActiveDirectorySecurityInheritance.All);
de.ObjectSecurity.AddAccessRule(NewRule);
de.CommitChanges();
Однако при попытке создать или получить доступ к общедоступной очереди возникает следующая ошибка:
Компьютер установки рабочей группы не поддерживает эту операцию.
Как описано здесь, я удалил MSMQ и Интеграция с MSMQ AD, установил заново, но ошибка та же.
Я убедился, что MSMQ установлен в режиме домена, доказав, что HKLM\Software\Microsoft\MSMQ\Parameters
имеет Workgroup
значение REG_DWORD 0x00000001 (1)
.
Итак, я просмотрел eventvwr.msc
и обнаружил следующие ошибки:
Службе очереди сообщений не удалось присоединиться к домену компьютера «EXCH». Ошибка 0xc00e0025:
а также
Службе очереди сообщений не удалось создать объект msmq (конфигурация MSMQ) в доменных службах Active Directory. Ошибка c00e0025h:
Эти ошибки уже описаны здесь, но без принятого решения.
Итак, у кого-нибудь есть идея, где найти виновника?