1

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

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

由于并非所有员工都在这里工作,这给我 [我的项目] 带来了问题。权限不允许程序更新我需要的所有内容。我用谷歌搜索并找到了这个链接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)) 部分肯定会返回错误。如果我删除了 System32 之外的所有文件夹,那么 Directory.Exsts 就可以正常工作。

为什么我的程序无法确定该 msmq 文件夹是否存在?我试过“以管理员身份运行”,它仍然返回错误。我需要做什么才能使该支票发挥作用?

谢谢

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

4

1 回答 1

0

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

于 2012-02-03T02:24:10.883 回答