通过C#更新专用队列上的MSMQ权限

本文关键字:MSMQ 权限 队列 更新 专用 通过 | 更新日期: 2023-09-27 18:22:11

我们在生产系统中使用一些专用MSMQ队列。自从实现以来,我们不得不用队列更新一些东西,并重新创建它们以使用更新的代码。我们有200多台机器需要这些更新,所以我正在开发一个程序,该程序将通过短信进行更新。

我注意到,唯一可以运行我的程序进行更新的人是最初在该特定机器上设置专用队列的人。由于机器的数量,有多个管理员设置这些队列。

由于不是所有的员工都还在这里工作,这给我(我的项目)带来了问题。权限不允许程序更新我需要的所有内容。我在谷歌上搜索并找到了这个链接http://social.msdn.microsoft.com/Forums/hu-HU/msmq/thread/36a3d910-d533-4af3-86dc-498d00c68fef显示了如何通过修改为每个队列创建的文件来更新权限。太棒了当我手动导航到该路径并进行更新时,它就起作用了。现在我想通过短信推送以编程的方式完成它。

当试图从我的程序中运行此程序时,我收到一个错误,说目录"C:''Windows''System32''msmq''storage''lqs"不存在。嗯?当我在开始->运行中输入该路径时,它会很好地打开文件夹。好吧,破坏我代码的if(Directory.Exists(path))部分肯定会返回一个false。如果我删除System32以外的所有文件夹,那么Directory.Exsts就可以正常工作。

为什么我的程序不能确定msmq文件夹是否存在?我尝试过"以管理员身份运行",但它仍然返回false。我需要做什么才能让那张支票生效?

感谢

编辑:这真的很奇怪,我编写了一个FindAndReplace API,它将接收路径(文件或目录)、查找文本、替换文本等。当我从FindAndReplaceGUI包装器运行该程序时,它运行得很好。但当我从我的更新程序调用这个API时,它表示该目录不存在。这真是令人困惑。(我可能应该删除MSMQ标记,因为它与我的问题无关…)

通过C#更新专用队列上的MSMQ权限

Project+Properties,Build选项卡。将"目标平台"设置从x86更改为AnyCPU。这使您可以在64模式下运行程序,这样c:''windows''system32目录搜索就不会重定向到c:''windows''syswow64。