Обновление разрешений MSMQ для частной очереди через C # - PullRequest
1 голос
/ 02 февраля 2012

мы используем некоторые частные очереди MSMQ с нашей производственной системой. С момента внедрения нам пришлось обновлять некоторые вещи с помощью очередей и заново создавать их для работы с обновленным кодом. У нас более 200 машин, которым нужны эти обновления, поэтому я работаю над программой, которая будет отправлена ​​через SMS для этого обновления.

Что я замечаю, так это то, что единственный, кто может запустить мою программу для обновления, - это тот, кто изначально настроил личную очередь на этой конкретной машине. Из-за количества машин было несколько администраторов, которые настраивали эти очереди.

Поскольку не все сотрудники все еще работают здесь, это вызывает у меня [мою программу] проблему. Разрешения не позволяют программе обновлять все, что мне нужно. Я гуглил и нашел эту ссылку http://social.msdn.microsoft.com/Forums/hu-HU/msmq/thread/36a3d910-d533-4af3-86dc-498d00c68fef, которая показывает, как обновить разрешения путем изменения файла, который создается для каждой из очередей. Большой! Это работает, когда я вручную перехожу по этому пути и делаю обновление. Теперь я хочу сделать это программно с помощью SMS push.

При попытке запустить это из моей программы я получаю сообщение об ошибке, в котором говорится, что каталог не существует "C: \ Windows \ System32 \ msmq \ storage \ lqs". А? Когда я ввожу этот путь в Пуск-> Выполнить, он просто вызывает папку. Что ж, нарушение части if (Directory.Exists (path)) моего кода определенно возвращает false. Если я удаляю все папки, кроме System32, то Directory.Exsts работает просто отлично.

Почему моя программа не может определить, существует ли эта папка msmq? Я пытался "работать от имени администратора", и он по-прежнему возвращает ложь. Что мне нужно сделать, чтобы этот чек заработал?

Спасибо

Edit: это действительно странно, у меня есть API FindAndReplace, который я написал, который будет брать путь (файл или каталог), находить текст, заменять текст и т. Д. Когда я запускаю эту программу из моего Find And Replace Оболочка GUI, она работает просто отлично. Но когда я вызываю этот API из моей программы обновления, он говорит, что каталог не существует. Это действительно сбивает с толку. (Вероятно, мне следует удалить тег MSMQ, поскольку он не имеет ничего общего с моим вопросом ...)

1 Ответ

0 голосов
/ 03 февраля 2012

Проект + Свойства, вкладка "Сборка".Измените настройку «Целевая платформа» с x86 на AnyCPU.Это позволяет программе работать в 64-режиме, поэтому поиск по каталогу c: \ windows \ system32 не перенаправляется на c: \ windows \ syswow64.

...