2012-08-30 5 views
2

이 응용 프로그램은 msado15.dll, msvcr100.dll 및 많은 dll을 사용합니다.현재 디렉토리에 dll 파일을 부과하는 방법은 무엇입니까?

나는 응용 프로그램이 ProcessExplorer 및 DependencyWalker를 사용하여 현재 디렉토리에서 msado15.dll 및 msvcr100.dll 파일을로드하지 않는다는 것을 알아 냈습니다.

대신이 응용 프로그램은 winsxs 폴더 또는 다른 Windows 시스템 디렉터리에서 dll을로드합니다.

"현재 디렉토리가 아닙니다"에 dll을로드하지 못하도록하고 싶습니다. 복사 한 dll이 없어도 제대로 작동합니다.

어떻게 해결할 수 있습니까? 어떤 도움을 주시면 감사하겠습니다.

미리 감사드립니다.

+0

변수 PATH 환경에 나열된

  • 디렉토리는 실제 현재 디렉토리 또는 실행 파일이 들어있는 디렉토리를 의미합니까? 현재 디렉토리에서 DLL을로드하는 데 보안 문제가 있으므로 일부 관리자는 DLL을 비활성화했습니다. –

  • +0

    나는 exe 파일이 존재하는 디렉토리를 의미한다. 나는 그런 보안 문제에 대해 연구 할 것이다. –

    답변

    4

    나는 약간의 조사를했는데 실제로는 꽤 쉽습니다. this article에 따르면 (YourAppName).local이라는 빈 파일을 만드는 것뿐입니다. 이렇게하면 공유 구성 요소를 사용하는 대신 exe 폴더를 볼 수 있습니다.

    +0

    정말 고마워요! –

    +0

    글쎄요, XP에서 작동한다는 것만 알았습니다. 나는 옆으로 나란히 어셈블리 및 물건에 대한 연구를해야 할 것 같아요 ... –

    +0

    그래,하지만 그것은 응용 프로그램에 매니 페스트가없는 경우 다른 OS에서 작동하는 것으로 작성되었습니다. 그것을 제거해보십시오 (링커 옵션에 있음). – VoidStar

    0

    exe가 들어있는 디렉터리에 해당 DLL (msado15.dll, msvcr100.dll) 복사본을 넣습니다. 로더는 먼저 exe가있는 디렉토리에서 DLL을로드하려고 시도합니다. : 아래

    창문 로더가 DLL을 검색하는 순서입니다 [참조 : C-C를 통해 윈도우 ++ 제프리 리히터에 의해]

    1. 윈도우 시스템 디렉토리에 의해 반환 된 실행 파일을 포함하는 디렉토리 GetWindowsDirectory
    2. 16 비트 시스템 디렉토리이며,
    3. 윈도우 디렉토리 GetSystemDirectory
    4. ,691에 의해 반환 된 윈도우 디렉토리 아래에있는 시스템 하위 폴더
    5. 프로세스의 현재 디렉토리 "현재 디렉토리"에 의해
    관련 문제