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

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

问题:

在 Windows Server 2003 上打开 Windows“队列消息”时,我收到错误消息

"The list of messages cannot be retrieved. Error: Access is denied"

为什么?

按照以下步骤重新创建:

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

显示的错误信息:

"The list of messages cannot be retrieved. Error: Access is denied."

当前部署的设置/配置:

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

答案1

如果 .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

我认为值得从使用计算机管理 (compmgmt.msc) 或 Active Directory 用户和计算机 (dsa.msc) 检查队列、其对象和父容器的权限开始。后者可以在安装了 MSMQ 目录服务集成组件时使用,因为它允许将队列属性发布到目录。

以下是如何使用 Active Directory 用户和计算机 (dsa.msc) 执行此操作。确保在此管理单元的“视图”下,您已启用以下选项“用户、联系人、组和计算机作为容器”和“高级功能”,这些选项允许您找到托管 MSMQ 队列的计算机对象,展开它并调用属性以编辑队列容器 ACL,方式与处理文件/文件夹 ACL 相同(参见下面的示例屏幕截图)。您很可能需要取得所有权,然后才能对 ACL 进行任何更改。

在此处输入图片描述

您还可以使用计算机管理检查 ACL,方法是导航到计算机管理 > 消息队列并在那里找到您的队列或其父容器并检查/编辑 ACL。请参阅下面的示例屏幕截图。

在此处输入图片描述

但是,如果未安装 MSMQ 目录服务集成组件,您将不会在 Active Directory 用户和计算机管理单元中看到 MSMQ 队列,并且只能使用计算机管理来编辑 MSMQ 对象 ACL。

如果编辑 ACL 没有帮助,您应该查看上面的答案,其中涉及编辑位于 C:\Windows\System32\msmq\storage\lqs 下的队列文件。您也可以查看此博客文章了解详情。

相关内容