No permission to access a private MSMQ

Mez picture Mez · Apr 23, 2009 · Viewed 24.6k times · Source

On an XP machine there is a private messagequeue that was created by a .net service. When I want to access this private queue in a VB6 application I keep getting an "Access is denied" error. So it seems this is a security issue, only I don't understand why even when I am logged on as an administrator I still can't have access to queue that was created on the same machine. Is there something else I have to take into account.

Sample on how I use the queue in 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

Answer

Jose Basilio picture Jose Basilio · Apr 24, 2009

This can happen if the .NET Service removed the "Everyone" group from the permissions the private queue. Here are some steps you can take to resolve this:

  1. Stop the MSMQ Service

  2. Open the folder C:\WINDOWS\system32\msmq\storage\lqs

  3. Find the file in this folder that describes your queue -- (incommingQueue)

  4. Using notepad, open the lqs file for some other private queue that has good security permissions. (If you don't have any other private queues create one)

  5. Locate the line in the file that begins Security=....

  6. Copy the whole line to your clipboard (watch out for Word Wrap, this line will be quite long)

  7. Open the lqs file for your problem queue in your text editor

  8. Overwrite the Security=... line in this file with the contents of your clipboard

  9. Save the modified lqs file

  10. Start the MSMQ service

You should find that the problem queue now has the same permissions as the queue whose security settings you copied at step 6 above.