System32와 시스템 경로의 DLL

System32와 시스템 경로의 DLL

Windows에서 Windows가 .dll을 찾기 위해 이러한 폴더를 검색하는 방식은 무엇을 선호합니까? 예를 들어 동일한 dll의 두 가지 버전(시스템 32 폴더와 시스템 경로에 하나씩)이 있는 경우 Windows는 어디에서 먼저 보일까요?

답변1

Windows는 먼저 Kernel32.dll 및 User32.dll과 같은 "알려진 DLL"을 검색합니다.

그러면 Windows는 다음 순서로 DLL을 검색합니다.

Windows 시스템 디렉터리입니다. GetSystemDirectory 함수는 이 디렉터리의 경로를 검색합니다.

Windows 디렉터리입니다. GetWindowsDirectory 함수는 이 디렉터리의 경로를 검색합니다.

현재 프로세스의 실행 모듈이 있는 디렉터리입니다.

현재 디렉토리.

PATH 환경 변수에 나열된 디렉터리입니다.

64비트 창에서 32비트 프로세스는 64비트 디렉터리가 아닌 32비트 system32 디렉터리를 사용합니다.

2k3이나 XP의 pre sp1과는 약간 다릅니다.

답변2

PATH환경 변수 에 따라 다르지만 일반적 %windir%\System32으로 %windir%.

개발자 모자 착용: 가능하면 이 폴더 중 하나에 아무것도 설치하지 않을 것입니다. 특히 병렬 어셈블리를 지원하는 최신 OS 버전(예: XP/Vista/2008)의 경우 더욱 그렇습니다.

두 위치 모두에 .DLL을 저장하는 애플리케이션을 설치했다면 개발자에게 연락하여 문제를 해결해 보도록 하겠습니다.

답변3

이것에 대해 강타하십시오 :

http://msdn.microsoft.com/en-us/library/7d83bc18(VS.80).aspx

"주문이 변경되었습니다!"를 참고하세요. 이 페이지를 참조하는 댓글:

http://msdn.microsoft.com/en-us/library/ms972822.aspx

답변4

DLL 로딩은 Windows API LoadLibrary 함수에 의해 처리되며 검색 순서는 이에 대한 설명서에 설명되어 있습니다.http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx

관련 정보