我有一个可以作为Windows服务或独立控制台运行的应用程序。它远程部署在我的客户端服务器上。当我远程桌面进入服务器时,我使用相同的域帐户来运行我的应用程序的Windows服务配置。因此,将应用程序作为Windows服务或控制台运行绝对是在相同的凭据下完成的。或者是吗?问题是我的控制台抛出"访问消息队列系统被拒绝"例外,虽然Windows服务没有任何问题。访问MSMQ系统的应用程序的所有功能都封装在Windows服务和控制台都使用的.dll中,因此应该没有区别。
关于我应该改变什么的任何想法?
答案 0 :(得分:1)
我制作了一个与MSMQ交互的Windows服务(一个愚蠢的数据交换应用程序,不需要安全性)。
我必须使用“计算机管理”中的“消息队列”属性窗格禁用未经过身份验证的RPC调用才能使其正常工作。否则会抛出System.Messaging.MessageQueueException (0x80004005): Access to Message Queuing system is denied
。
此外,服务在本地系统下运行(我记得是默认情况下)
答案 1 :(得分:0)
正在执行服务/控制台的用户应该可以访问MSMQ。 请检查您的实例是否是这种情况。