繁体   English   中英

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

[英]Updating MSMQ permissions on a private queue via C#

我们在生产系统中使用了一些私有MSMQ队列。 自实施以来,我们不得不使用队列更新某些内容,然后重新创建它们以使用更新的代码。 我们有200多台需要这些更新的计算机,因此我正在研究一个程序,该程序将通过SMS推送以执行此更新。

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

由于并非所有员工仍在这里工作,因此这使我[我的程序]遇到了问题。 该权限不允许程序更新我需要的所有内容。 我在Google上搜索并找到了此链接http://social.msdn.microsoft.com/Forums/hu-HU/msmq/thread/36a3d910-d533-4af3-86dc-498d00c68fef ,该链接显示了如何通过修改文件来更新权限。为每个队列创建。 大! 当我手动导航到该路径并进行更新时,它可以工作。 现在,我想通过SMS推送以编程方式进行操作。

尝试从我的程序运行此文件时,出现错误,提示目录不存在“ C:\\ Windows \\ System32 \\ msmq \\ storage \\ lqs”。 ?? 当我在“开始”->“运行”中输入该路径时,它会弹出文件夹。 好吧,破坏我代码的if(Directory.Exists(path))部分肯定会返回false。 如果删除System32以外的所有文件夹,则Directory.Exsts可以正常工作。

为什么我的程序无法确定该msmq文件夹是否存在? 我尝试过“以管理员身份运行”,但仍返回false。 我需要做什么才能使该支票生效?

谢谢

编辑:这真的很奇怪,我有一个我编写的FindAndReplace API,它将使用路径(文件或目录),查找文本,替换文本等。当我从“查找和替换” GUI包装器运行该程序时,它工作正常。 但是,当我从更新程序中调用此API时,它说该目录不存在。 这真是令人困惑。 (我可能应该删除MSMQ标签,因为它与我的问题无关...)

项目+属性,生成选项卡。 将“目标平台”设置从x86更改为AnyCPU。 这使您可以在64模式下运行程序,因此c:\\ windows \\ system32目录搜索不会重定向到c:\\ windows \\ syswow64。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM