소프트웨어 devcon.exe, pnputil.exe 드라이버 설치
2022.12.08 17:35
안녕하세요. 제가 가상키보드 드라이버를 배포할 일이 있어 드라이버 파일들과 함께 배치파일을 구성하여 원클릭으로 설치하게 만들려고 하는데요.
해당 문구를 발생시키지 않고 드라이버를 설치할 수 있는 방법이 있을까요? 사용될 스크립트는 아래와 같습니다
devcon.exe install abcdefg.inf root\abcdefg
알아본 바로는 -runhidden 을
devcon.exe install abcdefg.inf root\abcdefg -runhidden
이런식으로 붙이면 된다고 보긴 했는데 붙이나 안붙이나 동일하여 여쭤봅니다!
댓글 [11]
-
zerojiddu 2022.12.08 18:33 -
M1nar1 2022.12.09 00:17
많은 도움이 되었습니다. 혹시 어떤 방법으로 드라이버를 삭제할 수 있는지요?
pnputil /remove-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
pnputil /remove-device /deviceid "USB\Class_03"
pnputil로 두 방법 다 .inf또는 경로를 긁어와야 하는거 같은데 스크립트에서 구현하기가 힘드네요
pnputil로 "driver.inf" 사용해 간편하게 삭제하는 방법이 없을까요? -
zerojiddu 2022.12.09 10:31 현재 작동중인 윈도우에서 마소꺼 제외한
다른 회사 드라이버의 원래 .inf 파일 이름 말고
oem#.inf (Published Name) 이름을 확인해서,
dism /online /get-drivers /format:table
이렇게 치니 정상적으로 제거가 되네요.
pnputil /delete-driver oem18.inf /force
-
M1nar1 2022.12.09 11:35
oem번호.inf 이 부분이 PC마다 번호가 달라서 삭제에 어려움을 겪고 있습니다.. original file name으로 처음부터 삭제가 가능하다면 오히려 쉬울텐데,, oem.inf말고는 방법이 없는건가요..? -
M1nar1 2022.12.09 11:45
+ 삭제에 어려움을 왜 겪는지 글을 안써서 덧붙입니다!
스크립트로 구현을 해야해서 오리지널 파일 이름으로 차라리 삭제하면 편한데 oem#.inf는 PC마다 #의 넘버가 달라 다른 방법이 없는건가 해서 여쭤본겁니다..! -
zerojiddu 2022.12.09 12:58 oem#.inf 이름말고 다른방식으로,
이 한줄로 얼굴인식 드라이버 삭제해보니 정상적으로 돼네요.
foreach ($dev in (Get-PnpDevice | Where-Object{$_.Service -eq "WUDFRd"})) {pnputil /remove-device $dev.InstanceId}
님의 경우는
파워쉘에서
get-pnpDevice 로 전체 드라이버 정보를 보고
get-pnpDevice | ?{$_.Class -eq 'keyboard'} | select *
치면 원하는 드라이버 속성이 뜨요.
Service 부분 이름이 .inf 파일 이름과 일치할거예요.
FriendlyName, Name 부분으로 해도 됩니다.
foreach ($dev in (Get-PnpDevice | Where-Object{$_.Service -eq "i8042prt"})) {pnputil /remove-device $dev.InstanceId}
그리고 위 제 댓글에서
pnputil /delete-driver oem18.inf /force
만 적었는데,
pnputil /delete-driver oem18.inf /uninstall /force /reboot
이 제거에 맞는거 같습니다.
-
M1nar1 2022.12.09 17:37
정보 알려주셔서 감사합니다..
금방 테스트 해본 바로는
PS C:\Windows\system32> foreach ($dev in (Get-PnpDevice | Where-Object{$_.Service -eq "mshidumdf"})) {pnputil /remove-device $dev.InstanceId}Microsoft PnP 유틸리티
장치를 제거하지 못했습니다: ROOT\HIDCLASS\0000
해당 장치의 사용을 중지할 수 없습니다.
Microsoft PnP 유틸리티
장치를 제거하지 못했습니다: ROOT\HIDCLASS\0001
해당 장치의 사용을 중지할 수 없습니다.
라고 파워쉘에서 출력을 하는데 강제적인 방법이 없을까요..?
++ devcon으로는
call devcon.exe remove "HID\ttcvcontrkb"call devcon.exe remove "root\ttcvcontrkb"
이 명령어 두개로 가능하더군요 -
zerojiddu 2022.12.09 18:37 방금 이명령어로 제 컴에선 삭제되는 걸 확인했습니다.
레지키도 삭제되고, 확인되던 정보가 전혀 나오지 않는걸 보니 정상 제거됐어요.
Invoke-CimMethod -Query 'select * from Win32_SystemDriver where name like "mshidumdf"' -MethodName "delete"
삭제전 제 컴에선,
Get-PnpDevice | Where-Object{$_.Service -eq "mshidumdf" 이걸로는 아무것도 뜨지가 않고,
Get-CimInstance Win32_SystemDriver -Filter "name='mshidumdf'" 이걸로 하니 정보가 뜨네요.
get-service mshidumdf 치니, 시작유형이 수동모드로 자체적으로는 시작을 못하는 윈도우 서비스로 나와요.
레지키도 있구요.
get-service mshidumdf | set-service -startupType disabled 이걸치면 아예 시작못하게 설정도 되구요.
-
M1nar1 2022.12.12 23:58
제가 이 스크립트를 사용하여 오늘 테스트를 해봤습니다. 근데 이런 오류가 발생하더군요
아무리 구글링을 해봐도 관련된 내용이 찾기 힘들어 다시 문의드립니다 ㅠㅠ -
zerojiddu 2022.12.13 07:32 Get-AuthenticodeSignature 는 .cat(드라이버 보안 인증서가 있는 catalog 파일)
을 지정해야되는데,
ttcvcontrkb.inf 드라이버 설치파일로 잘못 지정했네요.
제컴에서 한줄 한줄 쳐봤어요. 아무 에러없고, 아무 확인창 없이
드라이버가 조용히 순식간에 설치됐어요.
-
M1nar1 2022.12.13 14:03
감사합니다! 드라이버 설치되고 devcon으로 장치설치까지 해주니 장치관리자에 문제없이 HID장치로 뜨네요
근데 파워쉘에선 잘 되는데 cmd에서 powershell 붙여주고 실행하니 이와같은 문제가 발생하네요..
제가 파워쉘 스크립트가 아닌 배치파일 스크립트로 작성중이라 오류 잡기가 힘드네요 ㅠㅠ
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
95636 | 기 타| 혹시 지면 신문 보는 사이트가 있나요? [7] | 테츠로 | 610 | 12-22 |
95635 | 기 타| mp4 파일 title 변경 문의 [3] | 3561 | 320 | 12-22 |
95634 | 소프트웨어| .usb 사용기록 지우는 프로그램 [4] | First. | 713 | 12-22 |
95633 | 윈 도 우| 윈도우7 임베디드 포스 레디 or 일반 윈도우7 [4] | MSTSC | 651 | 12-22 |
95632 | 윈 도 우| 윈도우11로 (만) 업데이트 차단이나 끄기 가능한가요 ? [1] | Outlet.IND | 541 | 12-22 |
95631 | 윈 도 우| PE에 12세대 건너뛰고 13세대 VMD IRST만 설치했는데 [13] | chrome' | 898 | 12-22 |
95630 | 윈 도 우| 윈도우11 업데이트 질문입니다. [1] | 양치기영감 | 372 | 12-22 |
95629 | 소프트웨어| Toggle Defender.bat [4] | 즐거운컴 | 447 | 12-22 |
95628 | 소프트웨어| 3dp랑 이지드라이버 중에 어느게 좋을까요? [7] | 『ⓖⓤⓝ』 | 670 | 12-22 |
95627 | 소프트웨어| Volume OSD 마지막 버전있을까요? [1] | 『ⓖⓤⓝ』 | 205 | 12-22 |
95626 | 하드웨어| H61에 asus GT730 DDR5 호환될까요? [6] | 무니모니 | 462 | 12-21 |
95625 | 기 타| Hp컴 고장증상 질문입니다 [2] | 프리티맨 | 459 | 12-21 |
95624 | 윈 도 우| 용량이 큰 SSD 교체시 트루이미지 복원방법이 있을까요? [4] | 민트러브 | 645 | 12-21 |
95623 | 윈 도 우| 오랜만에 설치입니다 도와주십쇼 [6] | 옥수수 | 686 | 12-21 |
95622 | 윈 도 우| 오랜만에 설치입니다 도와주십쇼 (_ | 옥수수 | 173 | 12-21 |
95621 | 윈 도 우| 윈도우10, 11 검색 버튼 용도가 무엇인가요? [3] | 이니에스타 | 394 | 12-21 |
95620 | 윈 도 우| 128gb 포멧하고 윈도우만 설치했는데 C드라이브 용량 94기... [7] | zeze | 744 | 12-21 |
95619 | 기 타| 듀얼 모니터 상호 전환 프로그램 문의 [5] | nuli | 354 | 12-21 |
95618 | 윈 도 우| 이거 내용 쉽게 알아 낼 수 있을까요~? [7] | 지룡자 | 855 | 12-20 |
95617 | 기 타| 혹시 다중?검색 하는 방법이 있을까요? [3] | reg | 344 | 12-20 |
명령어 옵션문제가 아니라,
드라이버 설치파일 인증서를 윈도우의
LocalMachine\TrustedPublisher certificate store
에 등록하는 스크립트를 미리 넣어두고 설치하면 될거 같은데요.
위 스샷도 인증서 등록화면이구요.
파워쉘에서,
$signature = Get-AuthenticodeSignature driver.cat
$store = Get-Item -Path Cert:\LocalMachine\TrustedPublisher
$store.Open("ReadWrite")
$store.Add($signature.SignerCertificate)
$store.Close()
PnPutil.exe /add-driver driver.inf /install