打开时出现 Windows QUEUE MESSAGES 错误 - 无法检索消息列表。错误:访问被拒绝

sco*_*tus 4 windows-server-2003 wcf msmq

问题:

在 windows server 2003 上打开 windows "QUEUE MESSAGES" 时收到错误消息

"The list of messages cannot be retrieved. Error: Access is denied"
Run Code Online (Sandbox Code Playgroud)

为什么?

按照以下步骤重新创建:

  • Windows Server 2003 标准 64 位
  • 右击我的电脑
  • 选择管理
  • 服务
  • 消息队列
  • 私人队列
  • 我的服务
  • 队列消息

显示的错误消息:

"The list of messages cannot be retrieved. Error: Access is denied."
Run Code Online (Sandbox Code Playgroud)

当前部署的设置/配置:

  • 以本地管理员身份登录。
  • 机器是独立的。
  • WCF 服务正在运行(使用 WCF 特定用户)
  • WCF 用户帐户是本地 ADMIN 组的成员。
  • 点网 4.0.
  • 正在运行Messing Queuing 服务(本地系统)
  • 可能是权限问题导致错误。

sco*_*tus 5

如果 .NET 服务从私有队列的权限中删除了“Everyone”组,就会发生这种情况。以下是您可以采取的一些步骤来解决此问题:

  1. 停止 MSMQ 服务
  2. 打开文件夹 C:\WINDOWS\system32\msmq\storage\lqs
  3. 在此文件夹中找到描述您的队列的文件 -- (incommingQueue)
  4. 使用记事本打开具有良好安全权限的其他一些专用队列的 lqs 文件。(如果您没有任何其他私人队列,请创建一个)
  5. 找到文件中以 Security=... 开头的行。
  6. 将整行复制到剪贴板(注意自动换行,这一行会很长)
  7. 在文本编辑器中打开问题队列的 lqs 文件
  8. 用剪贴板的内容覆盖此文件中的 Security=... 行
  9. 保存修改后的lqs文件
  10. 启动 MSMQ 服务

您应该会发现,问题队列现在与您在上述步骤 6 中复制其安全设置的队列具有相同的权限。

  • 我试图编辑文件,但它说“请检查文件是否在另一个程序中打开”我无法弄清楚文件在哪里打开。当我重新启动系统并且应用程序正在运行时 (2认同)