애플리케이션이 의존하는 sys 파일을 정적으로 식별하는 방법은 무엇입니까?

애플리케이션이 의존하는 sys 파일을 정적으로 식별하는 방법은 무엇입니까?

레거시 운영 체제(예: XP)에서 응용 프로그램을 마이그레이션하는 데 도움을 주기 위해 응용 프로그램을 실행하기 위해 의존하는 드라이버(sys) 파일을 식별해야 합니다. 이 작업은 설치 프로그램이나 응용 프로그램을 실행하지 않고 응용 프로그램이 설치된 기존 시스템을 검사하여 수행해야 합니다.

완벽한 솔루션은 아니지만 기본 제공 드라이버(운영 체제 설치 이후 추가된 드라이버)를 식별하려는 시도가 이루어졌습니다. 이렇게 하면 고려할 sys 파일 수가 줄어들기 때문입니다. DISM API는 드라이버의 받은 편지함 상태를 반환할 수 있지만 이를 위해서는 Windows 7 이상이 필요합니다.

지금까지 신뢰할 수 있는 솔루션은 XP에서는 회피 가능한 것으로 입증되었습니다. NTFS 타임스탬프 메타데이터(예: 변경됨)를 쿼리하면 운영 체제가 설치된 이후 파일 시스템에 추가된 sys 파일을 식별하는 데 도움이 될 수 있습니다. 성공하더라도 이는 문의 범위를 좁힐 뿐이며 실제로 응용 프로그램이 의존하는 드라이버를 식별하지는 않습니다.

비슷한 질문을 한 적이 있어요.여기.

그렇다면 애플리케이션이 의존하는 sys 파일을 정적으로 식별하는 방법은 무엇입니까?

답변1

이것은 오해입니다. 어떤 프로그램도 .sys파일이나 드라이버에 "종속"되지 않습니다. 이는 운영 체제에만 의존하며 운영 체제는 적절하다고 생각되는 모든 모듈을 사용합니다.

예를 들어, 프로그램이 인쇄하려는 경우 해당 프로그램이 개발된 컴퓨터의 프린터 드라이버에 의존하지 않습니다. 다른 컴퓨터, 다른 운영 체제 또는 다른 프린터에서는 다른 드라이버가 사용됩니다.

다른 게시물에서는 의존성 워커, 프로그램이 어떤 DLL을 호출하는지 알려줍니다. 대상 컴퓨터에서 이러한 DLL의 일부 버전을 사용할 수 있는지 확인해야 합니다.

일부 DLL은 kernel32.dllWindows의 필수 부분이며 모든 Windows 버전에 존재합니다.

예를 들어 .Net Framework 또는 C/C++ 런타임과 관련된 다른 DLL은 대상 컴퓨터에 설치되거나 설치되지 않을 수 있으며 설치하려면 올바른 버전이 필요할 수도 있습니다.

.Net Framework는 이전 버전과 호환됩니다. 즉, 낮은 버전으로 컴파일된 프로그램에서는 더 높은 버전이 작동하지만 C/C++ 런타임에는 정확한 버전이 필요하므로 제품과 함께 DLL을 배포해야 할 수도 있습니다.

이에 대해 만들어진 용어가 있습니다.DLL 지옥, 이는 전적으로 적절합니다. 개발자로서 이러한 지옥을 최소화하려면 가능한 한 많은 환경에서 분산 소프트웨어를 테스트해야 합니다. 그러나 조만간 당신은 그런 일을 겪게 될 것임을 확신하십시오.

관련 정보