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

时间:2012-02-02 18:46:09

标签: c# .net system.io.directory

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

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

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

当我尝试从我的程序运行它时,我收到一条错误,说该目录不存在“C:\ Windows \ System32 \ msmq \ storage \ lqs”。咦?当我将该路径输入Start-> Run时,它会调出文件夹。好吧,打破我的代码的if(Directory.Exists(路径))部分肯定会返回false。如果我删除System32之外的所有文件夹,那么Directory.Exsts工作正常。

为什么我的程序无法确定该msmq文件夹是否存在?我试过“以管理员身份运行”,但仍然返回false。我需要做些什么来使检查工作?

由于

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

1 个答案:

答案 0 :(得分:0)

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