C#

2012-02-02 2 views
1

을 통해 개인 큐의 MSMQ 사용 권한을 업데이트합니다. 우리는 프로덕션 시스템에서 일부 개인용 MSMQ 큐를 사용하고 있습니다. 구현 한 이후로 우리는 큐를 업데이트하고 업데이트 된 코드로 작업 할 수 있도록 다시 만들어야했습니다. 우리는이 업데이트를하기 위해 SMS를 통해 푸시 될 프로그램을 만들기 위해이 업데이트가 필요한 200 대 이상의 컴퓨터를 가지고 있습니다.C#

업데이트를 수행하기 위해 내 프로그램을 실행할 수있는 유일한 사람은 원래 해당 컴퓨터에서 개인 큐를 설정 한 사람이라는 것입니다. 컴퓨터 수가 많기 때문에이 대기열을 설정하는 관리자가 여러 명 있습니다.

모든 직원이 여기에서 계속 근무하는 것은 아니므로 이는 내 프로그램이 문제가되고 있습니다. 권한으로 인해 프로그램에서 필요한 모든 것을 업데이트 할 수 없습니다. 내가 봤 거든이 링크 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를 내 찾기 및 바꾸기 GUI 래퍼에서 프로그램, 그것은 잘 작동합니다. 그러나 업데이트 프로그램에서이 API를 호출 할 때 디렉토리가 존재하지 않는다고 말합니다. 이것은 정말로 혼란 스럽다. (아마도 MSMQ 태그는 제 질문과 관련이 없기 때문에 제거해야합니다 ...)

+0

이유를 찾아 냈습니다. FindAndReplace GUI 랩퍼 프로그램 (디렉토리를 찾는 WASP)은 64 비트 모드에서 실행 중이지만 작동하지 않는 다른 프로그램은 32 비트 모드에서 실행 중입니다. 이것을 디버깅하는 동안, 나는 그 디렉토리에서 내 텍스트에 대한 findstr을하는 것이 효과가 없다는 것을 발견했다. 매우 이상한 행동 ... – ganders

답변

0

Project + Properties, Build 탭. "대상 플랫폼"설정을 x86에서 AnyCPU로 변경하십시오. 이렇게하면 64 모드에서 프로그램을 실행할 수 있으므로 c : \ windows \ system32 디렉토리 검색은 c : \ windows \ syswow64로 리디렉션되지 않습니다.

+0

아, 어떻게 수정해야하는지 알았지 만 32 비트 모드로 실행될 때 작동하지 않는 이유를 알지 못했습니다. @HansPassant 감사합니다. – ganders