Microsoft MVP성태의 닷넷 이야기
Windows: 201. Windows - INF 파일을 이용한 장치 제거 방법 [링크 복사], [링크+제목 복사],
조회: 15835
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)

Windows - INF 파일을 이용한 장치 제거 방법

Windows 11로 업데이트를 하는 중에, "C:\$WINDOWS.~BT\Sources\Panther" 디렉터리에 생성되는 "CompatData_[날짜_시간].xml" 파일에 다음의 내용이 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<CompatReport xmlns="http://www.microsoft.com/ApplicationExperience/UpgradeAdvisor/01012009" MigXmlFile="FIuAiWjNpESBtTb8.9.24.0.0_APPRAISER_Migration.xml"><System X64Capable="True" X64Running="True"/><Hardware><HardwareItem HardwareType="Setup_BitlockerNoTargetSupport"><CompatibilityInfo BlockingType="None"/></HardwareItem><HardwareItem HardwareType="Setup_TargetIsNonStagedBuild"><CompatibilityInfo BlockingType="None"/></HardwareItem><HardwareItem HardwareType="Setup_LanguagePackDetected"><CompatibilityInfo BlockingType="None"/></HardwareItem><HardwareItem HardwareType="Setup_LicenseActivation"><CompatibilityInfo BlockingType="None"/></HardwareItem><HardwareItem HardwareType="Setup_FeaturesOnDemandDetected"><CompatibilityInfo BlockingType="None"/></HardwareItem><HardwareItem HardwareType="Setup_FlightSigningEnabled"><CompatibilityInfo BlockingType="None"/></HardwareItem><HardwareItem HardwareType="Setup_SecureBoot"><CompatibilityInfo BlockingType="None"/></HardwareItem><HardwareItem HardwareType="Generic">
            <CompatibilityInfo BlockingType="Hard" Message="Your PC has hardware that isn't ready for this version of Windows. Windows Update will automatically offer you this version of Windows once the issue has been resolved." Title="This PC can't be upgraded to this version of Windows."/>
            <Link Target="https://go.microsoft.com/fwlink/?LinkId=2183543" Value="Learn More"/>
        </HardwareItem>
    </Hardware><SystemInfo UplevelEdition="Windows 10" OSMajorVersion="10" OSMinorVersion="0"/>
    <Devices/>
    <DriverPackages>
        <DriverPackage Inf="oem51.inf" BlockMigration="False" HasSignedBinaries="True"/>
        <DriverPackage Inf="oem50.inf" BlockMigration="False" HasSignedBinaries="True"/>
        <DriverPackage Inf="oem6.inf" BlockMigration="False" HasSignedBinaries="True"/>
        <DriverPackage Inf="oem38.inf" BlockMigration="False" HasSignedBinaries="True"/>
        <DriverPackage Inf="oem37.inf" BlockMigration="False" HasSignedBinaries="True"/>
        <DriverPackage Inf="oem49.inf" BlockMigration="False" HasSignedBinaries="True"/>
        <DriverPackage Inf="oem17.inf" BlockMigration="False" HasSignedBinaries="True"/>
        <DriverPackage Inf="oem19.inf" BlockMigration="False" HasSignedBinaries="True"/>
        <DriverPackage Inf="oem53.inf" BlockMigration="False" HasSignedBinaries="True"/>
        <DriverPackage Inf="oem52.inf" BlockMigration="False" HasSignedBinaries="True"/>
        <DriverPackage Inf="oem26.inf" BlockMigration="False" HasSignedBinaries="True"/>
        <DriverPackage Inf="oem40.inf" BlockMigration="False" HasSignedBinaries="True"/>
        <DriverPackage Inf="oem11.inf" BlockMigration="False" HasSignedBinaries="True"/>
        <DriverPackage Inf="oem1.inf" BlockMigration="True" HasSignedBinaries="False"/>
        <DriverPackage Inf="oem0.inf" BlockMigration="True" HasSignedBinaries="False"/>
        <DriverPackage Inf="oem33.inf" BlockMigration="False" HasSignedBinaries="True"/>
        <DriverPackage Inf="oem7.inf" BlockMigration="False" HasSignedBinaries="True"/>
        <DriverPackage Inf="oem41.inf" BlockMigration="False" HasSignedBinaries="True"/>
        <DriverPackage Inf="oem10.inf" BlockMigration="False" HasSignedBinaries="True"/>
    </DriverPackages>
    <Programs/>
</CompatReport>

해당 INF 장치를 확인해 보면, 각각 "Microsoft Print To PDF", "Microsoft XPS Document Writer v4"로 별거 아닌 듯합니다. 하지만 그래도 BlockMigration 조건에 걸린다고 하니 찝찝해서 제거를 하고 싶었는데요, 검색해보면 아래의 글이 나옵니다.

Uninstalling inf files related to a driver file
; https://www.codeproject.com/Articles/440648/Uninstalling-inf-files-related-to-a-driver-file

setupapi.dll을 이용하는 방법인데요, 가령 다음과 같이 실행했더니,

c:\temp> RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultUninstall 132 C:\Windows\INF\oem0.inf

"Installation failed." 창이 뜹니다. 음... 가만 보니까 일반 사용자 권한으로 했군요. ^^ 다시 "관리자 권한"의 cmd.exe에서 실행하면 아무런 오류 메시지 없이, 그렇다고 성공 메시지도 없이 끝났습니다.

그런데, 실제로 해당 INF 파일은 그대로 있습니다. 게다가 윈도우 11 업그레이드를 다시 시도했더니 여전히 compat xml 파일에는 저 내용이 그대로 있었습니다. 그래서 다른 방법을 찾아봤는데요, pnputil.exe 사용법이 나오는군요. ^^

pnputil
; https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/pnputil

그래서 2개의 inf 파일을 다음의 명령어로 삭제했습니다.

C:\Windows\System32> pnputil -f -d oem0.inf
Microsoft PnP Utility

Driver package deleted successfully.


C:\Windows\System32> pnputil -f -d oem1.inf
Microsoft PnP Utility

Driver package deleted successfully.

이후로 compat xml에 저 항목은 더 이상 보이지 않는 걸로 봐서 삭제는 잘 되었습니다. 그래도 윈도우 11 업그레이드는 실패하는데요, 일단 INF 파일을 이용한 장치 제거를 할 수 있다는 것에 만족해야겠습니다. ^^





[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 3/31/2022]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 61  62  63  64  [65]  66  67  68  69  70  71  72  73  74  75  ...
NoWriterDateCnt.TitleFile(s)
12312정성태9/5/202026371개발 환경 구성: 508. Logstash 기본 사용법 [2]
12311정성태9/4/202018919.NET Framework: 937. C# - 간단하게 만들어 보는 리눅스의 nc(netcat), json_pp 프로그램 [1]
12310정성태9/3/202018180오류 유형: 644. Windows could not start the Elasticsearch 7.9.0 (elasticsearch-service-x64) service on Local Computer.
12309정성태9/3/202017458개발 환경 구성: 507. Elasticsearch 6.6부터 기본 추가된 한글 형태소 분석기 노리(nori) 사용법
12308정성태9/2/202019297개발 환경 구성: 506. Windows - 단일 머신에서 단일 바이너리로 여러 개의 ElasticSearch 노드를 실행하는 방법
12307정성태9/2/202020171오류 유형: 643. curl - json_parse_exception / Invalid UTF-8 start byte
12306정성태9/1/202017443오류 유형: 642. SQL Server 시작 오류 - error code 10013
12305정성태9/1/202019253Windows: 172. "Administered port exclusions"이 아닌 포트 범위 항목을 삭제하는 방법
12304정성태8/31/202017680개발 환경 구성: 505. 윈도우 - (네트워크 어댑터의 우선순위로 인한) 열거되는 IP 주소 순서를 조정하는 방법
12303정성태8/30/202018002개발 환경 구성: 504. ETW - 닷넷 프레임워크 기반의 응용 프로그램을 위한 명령행 도구 etrace 소개
12302정성태8/30/202018143.NET Framework: 936. C# - ETW 관련 Win32 API 사용 예제 코드 (5) - Private Logger파일 다운로드1
12301정성태8/30/202017752오류 유형: 641. error MSB4044: The "Fody.WeavingTask" task was not given a value for the required parameter "IntermediateDir".
12300정성태8/29/202018029.NET Framework: 935. C# - ETW 관련 Win32 API 사용 예제 코드 (4) CLR ETW Consumer파일 다운로드1
12299정성태8/27/202018806.NET Framework: 934. C# - ETW 관련 Win32 API 사용 예제 코드 (3) ETW Consumer 구현파일 다운로드1
12298정성태8/27/202018279오류 유형: 640. livekd - Could not resolve symbols for ntoskrnl.exe: MmPfnDatabase
12297정성태8/25/202017754개발 환경 구성: 503. SHA256 테스트 인증서 생성 방법
12296정성태8/24/202018845.NET Framework: 933. C# - ETW 관련 Win32 API 사용 예제 코드 (2) NT Kernel Logger파일 다운로드1
12295정성태8/24/202017730오류 유형: 639. Bitvise - Address is already in use; bind() in ListeningSocket::StartListening() failed: Windows error 10013: An attempt was made to access a socket ,,,
12293정성태8/24/202018703Windows: 171. "Administered port exclusions" 설명
12292정성태8/20/202021707.NET Framework: 932. C# - ETW 관련 Win32 API 사용 예제 코드 (1)파일 다운로드2
12291정성태8/15/202018704오류 유형: 638. error 1297: Device driver does not install on any devices, use primitive driver if this is intended.
12290정성태8/11/202019846.NET Framework: 931. C# - IP 주소에 따른 국가별 위치 확인 [8]파일 다운로드1
12289정성태8/6/202016802개발 환경 구성: 502. Portainer에 윈도우 컨테이너를 등록하는 방법
12288정성태8/5/202015996오류 유형: 637. WCF - The protocol 'net.tcp' does not have an implementation of HostedTransportConfiguration type registered.
12287정성태8/5/202017415오류 유형: 636. C# - libdl.so를 DllImport로 연결 시 docker container 내에서 System.DllNotFoundException 예외 발생
12286정성태8/5/202018758개발 환경 구성: 501. .NET Core 용 container 이미지 만들 때 unzip이 필요한 경우
... 61  62  63  64  [65]  66  67  68  69  70  71  72  73  74  75  ...