2012-02-02 36 views
1

我们在生产系统中使用了一些私有MSMQ队列。自实施以来,我们不得不用队列更新一些东西,并重新创建它们以使用更新后的代码。我们有超过200台机器需要这些更新,所以我正在研究一个将通过短信推送的程序来执行此更新。通过C#更新专用队列上的MSMQ权限

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

由于并非所有的员工仍然在这里工作,这导致我[我的计划]成为问题。权限不允许程序更新我需要的所有内容。我搜索了一下,发现这个链接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,我写道,将在路径(文件或目录),查找文本,替换文本等。当我运行程序从我的查找和替换GUI包装,它工作得很好。但是当我从我的更新程序调用这个API时,它说那个目录不存在。这真是令人困惑。 (我应该删除MSMQ标记,因为它与我的问题无关......)

+0

找到原因。 FindAndReplace GUI包装程序(即WAS查找目录)以64位模式运行,而另一个不工作的程序以32位模式运行。 在调试这个时,我发现在这个目录下为我的文本做一个findstr是行不通的,而只做一个常规的find就可以。非常奇怪的行为... – ganders 2012-02-02 21:32:52

回答

0

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

+0

啊,我知道如何解决它,但我不知道为什么它在32位模式下运行时不起作用。谢谢@HansPassant – ganders 2012-02-03 13:10:00

相关问题