本番システムでは、いくつかのプライベート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))部分を壊すと、間違いなくfalseが返されます。System32以外のすべてのフォルダーを削除すると、Directory.Exstsは正常に機能します。
そのmsmqフォルダが存在するかどうかをプログラムが判断できないのはなぜですか?「管理者として実行」しようとしましたが、それでもfalseが返されます。そのチェックを機能させるには何をする必要がありますか?
ありがとう
編集:これは本当に奇妙です。パス(ファイルまたはディレクトリ)を取り込んだり、テキストを検索したり、テキストを置き換えたりする、私が書いたFindAndReplace APIがあります。FindAndReplaceGUIラッパーからそのプログラムを実行すると、それはうまく機能します。しかし、更新プログラムからこのAPIを呼び出すと、ディレクトリが存在しないと表示されます。これは本当に紛らわしいです。(MSMQタグは私の質問とは何の関係もないので、おそらく削除する必要があります...)