Microsoft MVP성태의 닷넷 이야기
Windows: 201. Windows - INF 파일을 이용한 장치 제거 방법 [링크 복사], [링크+제목 복사],
조회: 20355
글쓴 사람
정성태 (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)
12280정성태8/2/202021066오류 유형: 634. 오라클 (평생) 무료 클라우드 VM 생성 후 SSH 접속 시 키 오류 발생 [2]
12279정성태7/29/202024597개발 환경 구성: 499. 닷넷에서 접근해보는 InterSystems의 Cache 데이터베이스파일 다운로드1
12278정성태7/23/202020099VS.NET IDE: 149. ("Binary was not built with debug information" 상태로) 소스 코드 디버깅이 안되는 경우
12277정성태7/23/202022677개발 환경 구성: 498. DEVPATH 환경 변수의 사용 예 - .NET Reflector의 (PDB 연결이 없는) DLL의 소스 코드 디버깅
12276정성태7/23/202022923.NET Framework: 930. 개발자를 위한 닷넷 어셈블리 바인딩 - DEVPATH 환경 변수
12275정성태7/22/202024143개발 환경 구성: 497. 닷넷에서 접근해보는 InterSystems의 IRIS Data Platform 데이터베이스파일 다운로드1
12274정성태7/21/202022435개발 환경 구성: 496. Azure - Blob Storage Account의 Location 이전 방법 [1]파일 다운로드1
12273정성태7/18/202026542개발 환경 구성: 495. Azure - Location이 다른 웹/DB 서버의 경우 발생하는 성능 하락
12272정성태7/16/202018166.NET Framework: 929. (StrongName의 버전 구분이 필요 없는) .NET Core 어셈블리 바인딩 규칙 [2]파일 다운로드1
12271정성태7/16/202022443.NET Framework: 928. .NET Framework의 Strong-named 어셈블리 바인딩 (2) - 런타임에 바인딩 리디렉션파일 다운로드1
12270정성태7/16/202023250오류 유형: 633. SSL_CTX_use_certificate_file - error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small
12269정성태7/16/202020723오류 유형: 632. .NET Core 웹 응용 프로그램 - The process was terminated due to an unhandled exception.
12268정성태7/15/202023784오류 유형: 631. .NET Core 웹 응용 프로그램 오류 - HTTP Error 500.35 - ANCM Multiple In-Process Applications in same Process
12267정성태7/15/202026218.NET Framework: 927. C# - 윈도우 프로그램에서 Credential Manager를 이용한 보안 정보 저장파일 다운로드1
12266정성태7/14/202022238오류 유형: 630. 사용자 계정을 지정해 CreateService API로 서비스를 등록한 경우 "Error 1069: The service did not start due to a logon failure." 오류발생
12265정성태7/10/202021252오류 유형: 629. Visual Studio - 웹 애플리케이션 실행 시 "Unable to connect to web server 'IIS Express'." 오류 발생
12264정성태7/9/202033361오류 유형: 628. docker: Error response from daemon: Conflict. The container name "..." is already in use by container "...".
12261정성태7/9/202023732VS.NET IDE: 148. 윈도우 10에서 .NET Core 응용 프로그램을 리눅스 환경에서 실행하는 2가지 방법 - docker, WSL 2 [5]
12260정성태7/8/202021557.NET Framework: 926. C# - ETW를 이용한 ThreadPool 스레드 감시파일 다운로드1
12259정성태7/8/202020100오류 유형: 627. nvlddmkm.sys의 BAD_POOL_HEADER BSOD 문제 [1]
12258정성태7/8/202023832기타: 77. DataDog APM 간략 소개
12257정성태7/7/202019988.NET Framework: 925. C# - ETW를 이용한 Monitor Enter/Exit 감시파일 다운로드1
12256정성태7/7/202022610.NET Framework: 924. C# - Reflection으로 변경할 수 없는 readonly 정적 필드 [4]
12255정성태7/6/202023352.NET Framework: 923. C# - ETW(Event Tracing for Windows)를 이용한 Finalizer 실행 감시파일 다운로드1
12254정성태7/2/202020127오류 유형: 626. git - REMOTE HOST IDENTIFICATION HAS CHANGED!
12253정성태7/2/202024006.NET Framework: 922. C# - .NET ThreadPool의 Local/Global Queue파일 다운로드1
... 61  62  63  64  65  66  67  68  69  [70]  71  72  73  74  75  ...