2008-09-24 6 views
3

이 응용 프로그램은 비 Win32 비 관리 응용 프로그램과 .NET 2.0 관리 응용 프로그램입니다. Win32 부분은 주 실행 파일이며 일부 지점에서는 .NET 2.0 런타임을로드하고 호스팅하며 일부 관리 모듈을로드하여 새 winforms 창을 엽니 다.문제 : .NET 코드가 하나의 디렉터리에서 실행되지만 다른 디렉터리에서는 실행되지 않습니다.

우리는 CASPOL 유형 문제를 공유했지만, 오늘날 우리에게는 매우 이상한 문제가 있습니다. 누군가가 나에게 포인터 나 아이디어를 줄 수 있기를 바랄뿐입니다. 우리가이 문제를 해결하는 데 도움이 될만한 것.

Citrix를 통해 액세스하는 서버의 경우 응용 프로그램 파일이 서버/도메인 관리자 인 현재 로그온 한 사용자의 바탕 화면에있는 디렉터리에 있으면 프로그램이 정상적으로 실행됩니다. .NET 창이 예상대로 열립니다.

그러나, 우리는 및 유지 모든 (내 지식에 CASPOL 명령 발생하게됩니다 그래서 아무 SAN 매핑 또는 아무것도) 서버의 물리적 디스크입니다 같은 디스크의 루트로 디렉토리를 이동하는 경우 동일한, 동일한 사용자, 동일한 구성 등, 우리가 .NET 창을 호출하려고 할 때 응용 프로그램이 자동으로 충돌합니다. 그냥 사라지는 방식으로 충돌합니다. 이는 스택 오버플로와 같은 것일 수 있음을 나타냅니다. 우리는 응용 프로그램의 일부분에 로깅 기능을 추가하여 어떤 일이 발생했는지 파악할 수있을 것입니다. 여기에서이 질문을 게시하고 있습니다.

CASPOL 액세스 목록에는 이상한 점이 없으며 NGEN 캐시에는 이상한 점이 없습니다 (서버 소유자가 이전에 손상된 이미지가 있었을 가능성이 있다고 생각했습니다). GAC에는 이상한 점이 없습니다 (우리는 어셈블리에 GAC를 사용하지 않습니다).

요약 : \ 문서를하고 U에서 실행되는 경우 설정 \ USERNAME \ 바탕 화면 \ 디렉토리는

  • 작동 : 프로그램이 U에서 실행되는

    • 경우 \ 디렉토리, 그렇지 않은
    • U가 : 서버의 물리적 디스크입니다
    • NGEN 또는 GAC의 어떤 명백한 괴짜가 오른쪽 .NET 런타임이 설치되어
    • 캐시하지, 우리의 응용 프로그램에 적합한 파일이 설치 (실제로 실행하면 잘 작동되었습니다 에서 d 데스크톱 위치)

    도움이 될만한 사람이 있습니까?

    편집 : 문제 re-asked here 다른/다른 정보와 함께 "해결됨".

  • 답변

    1

    첫 번째 찌르기는 MS-Sysinternals에서 프로세스 모니터를 실행하고이 두 경우에 대해 어떤 호출/결과가 다른지 확인합니다. 어쩌면이 작업 할 몇 가지 힌트를 줄 것이다 (같은 호출에 대해 서로 다른 결과를 좋은 일에없는 문제가 실행에 몇 가지 오류 ...) 당신은 MS에서 프로세스 모니터를 다운로드 할 수 있습니다

    : http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

    +0

    감사합니다. 우리는이 작업을 수행하고 있지만 사용량이 많은 서버이므로 핵심 모니터링 응용 프로그램을 실행할 때의 영향을 확신 할 수 없습니다. –

    1

    내 첫 번째 생각은 응용 프로그램 루트 디렉토리를 이동할 때 문제를 일으키는 어셈블리, 파일 등에 대한 참조를 위해 프로그램에 정의 된 상대/절대 경로가 없는지 확인해야한다는 것입니다.

    +0

    이러한 상대 경로가 없으며 모든 종류의 사용자 지정 어셈블리를로드 할 때의 해상도 처리 모든 것이 하나의 디렉토리에 있습니다. (로컬 화 된 리소스 DLL을 제외하고) –

    1

    사용자 권한과 관련이있을 수 있습니까? 점검을 위해 LUA Buglight에서 실행하십시오. 그것이 직접 관련이 없다고하더라도, 그 도구는 유용한 힌트를 제공 할 것입니다.

    +0

    그 프로그램에 익숙하지 않아요. 확실히 확인해 보겠습니다. 감사합니다. –

    2

    나는 그런 문제가 있었다. 많은 머리카락을 당긴 후 나는 그 문제를 발견했다.

    Process.Start() 호출을 사용할 때 매우 신중해야합니다. 시작 방법에 따라 작업 환경 (현재 경로, 시스템 환경 등)을 다양하게 사용할 수 있습니다.

    +0

    감사합니다,하지만 문제는 아닙니다. 우리는 .NET runtim을 호스팅하고 있습니다. e 내부적으로 Process.Start 거기에 참여하고 프로그램이 Windows 탐색기에서 실행 파일을 두 번 클릭하여로드되므로 두 인스턴스에서 로컬 폴더를 사용합니다. –

    관련 문제