GetDllDirectory
은 모호한 값을 생성합니다. 누군가가 SetDllDirectory
GetDllDirectory에 의해 생성 된 애매한 값에 어떻게 대처할 수 있습니까?
에 빈 문자열을 전달 SetDllDirectory
NULL
SetDllDirectory
에
- 아무도 전화하지 않았다 :이 호출이 생산하는 문자열이 비어있는 경우, 다음 중 하나를 의미합니다 첫 번째 두 경우는 제 목적과 동일하지만 세 번째 경우는 문제입니다. "이전"값을 저장하려면
GetDllDirectory
을 호출하고 "새로운"값을 임시로 설정하려면SetDllDirectory
을 호출하고 나중에 "이전"값을 복원하려면SetDllDirectory
을 다시 쓰려면 저장/복원 코드를 써야합니다. 일부는 되돌릴 위험이 있습니다. 다른 프로그래머의 의도.다른 프로그래머가 현재 작업 디렉토리를 DLL 검색 순서로 사용하려는 경우 (즉, 처음 두 글 머리표 중 하나가 참일 경우)
SetDllDirectory
에 빈 문자열을 전달하면 DLL 검색 순서에서 현재 작업 디렉토리로 이동하여 다른 프로그래머의 의도와 반대 방향으로 이동합니다.누구나이 모호성을 제거하거나 해결할 방법을 제안 할 수 있습니까?
P. DLL 검색 순서에서 현재 작업 디렉토리를 보안 구멍으로 해석 할 수 있음을 알고 있습니다. 그럼에도 불구하고 이것이 기본 동작이며 내 코드가이를 취소 할 수있는 위치에 있지 않습니다. 내 코드는 모든 잠재적 호출자의 기대치와 호환 될 필요가 있습니다. 그 중 많은 부분이 크고 낡았습니다.
예상대로입니다. 반면에 누군가가 밝은 아이디어를 게시 할 때까지 얼마나 기다려야 하는지를 아는 것은 어렵습니다. :-) –
@Integer : 충분히 길죠? –