问题:
在 Windows Server 2003 上打开窗口“QUEUE MESSAGES”时,我收到了错误消息
"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。
- Messing 队列服务正在运行(本地系统)
- 可能是创建错误的权限问题。
如果 .NET 服务从专用队列的权限中删除了“Everyone”组,就会发生这种情况。您可以采取以下步骤来解决此问题:
您应该会发现问题队列现在与您在上面的第 6 步中复制其安全设置的队列具有相同的权限。
我想值得从使用计算机管理 (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 下的队列文件。您也可以查看此博客文章以了解详细信息。