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
これは、.NETサービスがプライベートキューのアクセス許可から「Everyone」グループを削除した場合に発生する可能性があります。これを解決するために実行できるいくつかの手順は次のとおりです。
MSMQサービスを停止します
フォルダC:\WINDOWS\system32\msmq\storage\lqs
を開きます
キューを説明するこのフォルダー内のファイルを見つけます-(incommingQueue)
メモ帳を使用して、適切なセキュリティ権限を持つ他のプライベートキューのlqsファイルを開きます。 (他にプライベートキューがない場合は作成します)
Security=....
で始まるファイル内の行を見つけます
行全体をクリップボードにコピーします(ワードラップに注意してください。この行はかなり長くなります)
問題のあるキューのlqsファイルをテキストエディタで開きます
このファイルのSecurity=...
行をクリップボードの内容で上書きします
変更したlqsファイルを保存します
MSMQサービスを開始します
問題のあるキューには、上記の手順6でセキュリティ設定をコピーしたキューと同じアクセス許可があることがわかります。
ここに投稿された解決策は少しハックのようです。おそらく、これはWindowsXPに必要です。私はWindows7を使用して同様の問題に遭遇し、これを解決するために別のアプローチを使用しました。
状況:
解決策(これはWindows 7用です):
これで、キュー内のメッセージにアクセスし、必要に応じてキューをパージすることもできます。