如何在安装程序项目中为Windows服务提供MSMQ队列访问权限?

4
我有一个需要访问消息队列(MSMQ)的Windows服务。
队列本身是使用MessageQueueInstaller组件创建的,该组件自动生成安装代码。然后我使用标准设置项目进行部署。
服务也是使用相同的设置项目进行安装的。
当我启动服务时,它立即停止,并且我在代码中得到以下异常:

拒绝访问消息队列系统

我已经尝试过LocalService和NetworkService。
我是否需要安装程序更改队列所需的权限,还是需要更改服务的权限?
我应如何修改设置项目以进行此更改?
2个回答

4

您应该更改队列的权限。默认情况下,这些用户无法访问队列。


3
如果您在意的话,我做了以下操作:messageQueue.SetPermissions("Everyone", MessageQueueAccessRights.FullControl); - Pure.Krome
谢谢@Pure.Krome,这也解决了我的问题 :) - Paul Carroll
哇!MSMQ - 我已经好几年没用过了!我现在正在使用Azure队列,它们真的很棒。 - Pure.Krome

1

这种行为的原因之一是由于MSMQ以网络组模式安装。

尝试使用具有计算机管理员权限的域中的帐户。(这是我唯一有效的方法)

您还可以为此用户授予MQ权限。打开计算机管理器并以此方式执行。


这听起来像是软件部署人员需要完成的工作。我能让安装程序来完成其中的任何一项吗? - tpower
我知道的唯一方法就是手动操作。我们使用的是Scribesoft公司的产品。即使使用他们的安装程序,我也必须手动设置。 - Chris Jones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接