Нет разрешения на доступ к приватной MSMQ
На компьютере с XP есть частное сообщение, которое было создано службой .net.
Когда я хочу получить доступ к этой частной очереди в приложении VB6, я все равно получаю сообщение об ошибке "Отказано в доступе".
Так что, похоже, это проблема безопасности, только я не понимаю, почему даже когда я вошел в систему как администратор, я все еще
не может иметь доступ к очереди, созданной на том же компьютере.
Есть ли что-то еще, что я должен принять во внимание.
Пример того, как я использую очередь в VB6
Public msgQueue As MSMQQueue
Private Sub OpenQueue()
Dim MQ As New MSMQQueueInfo
MQ .PathName = ".\Private$\incommingQueue"
Set msgQueue = MQ.Open(MQ_RECEIVE_ACCESS, MQ_DENY_NONE)
End Sub
Ответы
Ответ 1
Это может произойти, если .NET Service удалила группу "Все" из разрешений частной очереди. Вот несколько шагов, которые вы можете предпринять, чтобы решить эту проблему:
-
Остановить службу MSMQ
-
Откройте папку C:\WINDOWS\system32\msmq\storage\lqs
-
Найдите файл в этой папке, который описывает вашу очередь - (incommingQueue)
-
Используя блокнот, откройте файл lqs для какой-либо другой частной очереди с хорошими разрешениями безопасности. (Если у вас нет других частных очередей, создайте их)
-
Найдите строку в файле, начинающемся с Security=....
-
Скопируйте целую строку в буфер обмена (обратите внимание на Word Wrap, эта строка будет довольно длинной)
-
Откройте файл lqs для вашей очереди проблем в текстовом редакторе
-
Перезапишите строку Security=...
в этом файле с содержимым вашего буфера обмена
-
Сохранить измененный файл lqs
-
Запустите службу MSMQ
Вы должны обнаружить, что очередь задач теперь имеет те же права, что и очередь, параметры безопасности которой вы скопировали на шаге 6 выше.
Ответ 2
Решение, размещенное здесь, кажется немного взломанным. Возможно, это необходимо для Windows XP. Я столкнулся с чем-то похожим с использованием Windows 7 и использовал другой подход для решения этой проблемы.
Ситуация:
- Программа состоит из кода С#, который создает частную транзакционную очередь
- Программа запускается как служба Windows, работающая в учетной записи Local System.
- Когда служба запускается, приватная очередь создается с учетной записью Local System в качестве владельца.
- Даже если я являюсь администратором, я не могу проверять сообщения из очереди.
Решение (это для Windows 7):
- Запустите compmgmt.msc
- Откройте "Услуги и приложения"
- Откройте "Очереди сообщений"
- Откройте 'Private Queues'
- Щелкните правой кнопкой мыши только что созданную очередь
- Нажмите "Свойства"
- Выберите вкладку "Безопасность"
- Нажмите "Дополнительно"
- Выберите вкладку "Владелец"
- Выберите "Администратор"
- Выберите вкладку "Разрешения"
- Нажмите "Добавить"
- Введите имя вашей учетной записи (например, "Администратор" )
- Нажмите "Проверить имена"
- Нажмите "ОК"
- Нажмите "ОК"
- Нажмите "ОК"
Теперь вы можете получить доступ к сообщениям в очереди и также очистить очередь, если хотите.