Unfortunately this Question was asked 4 years ago but no answer yet How can I obtain the driver key for a driver programmatically?
actually if it was answered, I would not ask again.
I have a software depends on Naps2 scanner software. I want to generate profiles.xml file and it depends on Driver Key and DeviceName
profiles.xml like below:
<?xml version="1.0"?>
<ArrayOfScanProfile xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ScanProfile>
<Device>
<ID>{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0000</ID>
<Name>HP Scanjet 300</Name>
</Device>
<DriverName>wia</DriverName>
<DisplayName>HP Scanjet 300</DisplayName>
<IconID>0</IconID>
<MaxQuality>false</MaxQuality>
<IsDefault>true</IsDefault>
<Version>2</Version>
<UseNativeUI>false</UseNativeUI>
<AfterScanScale>OneToOne</AfterScanScale>
<Brightness>0</Brightness>
<Contrast>0</Contrast>
<BitDepth>C24Bit</BitDepth>
<PageAlign>Right</PageAlign>
<PageSize>Letter</PageSize>
<Resolution>Dpi200</Resolution>
<PaperSource>Glass</PaperSource>
<EnableAutoSave>false</EnableAutoSave>
<Quality>75</Quality>
<AutoDeskew>false</AutoDeskew>
<BrightnessContrastAfterScan>false</BrightnessContrastAfterScan>
<ForcePageSize>false</ForcePageSize>
<ForcePageSizeCrop>false</ForcePageSizeCrop>
<TwainImpl>Default</TwainImpl>
<ExcludeBlankPages>false</ExcludeBlankPages>
<BlankPageWhiteThreshold>70</BlankPageWhiteThreshold>
<BlankPageCoverageThreshold>25</BlankPageCoverageThreshold>
<WiaOffsetWidth>false</WiaOffsetWidth>
<WiaRetryOnFailure>false</WiaRetryOnFailure>
<WiaDelayBetweenScans>false</WiaDelayBetweenScans>
<WiaDelayBetweenScansSeconds>2</WiaDelayBetweenScansSeconds>
<WiaVersion>Default</WiaVersion>
<FlipDuplexedPages>false</FlipDuplexedPages>
</ScanProfile>
<ScanProfile>
<Device>
<ID>HP Scanjet 300 TWAIN</ID>
<Name>HP Scanjet 300 TWAIN</Name>
</Device>
<DriverName>twain</DriverName>
<DisplayName>HP Scanjet 300 TWAIN</DisplayName>
<IconID>0</IconID>
<MaxQuality>false</MaxQuality>
<IsDefault>false</IsDefault>
<Version>2</Version>
<UseNativeUI>false</UseNativeUI>
<AfterScanScale>OneToOne</AfterScanScale>
<Brightness>0</Brightness>
<Contrast>0</Contrast>
<BitDepth>C24Bit</BitDepth>
<PageAlign>Right</PageAlign>
<PageSize>Letter</PageSize>
<Resolution>Dpi200</Resolution>
<PaperSource>Glass</PaperSource>
<EnableAutoSave>false</EnableAutoSave>
<Quality>75</Quality>
<AutoDeskew>false</AutoDeskew>
<BrightnessContrastAfterScan>false</BrightnessContrastAfterScan>
<ForcePageSize>false</ForcePageSize>
<ForcePageSizeCrop>false</ForcePageSizeCrop>
<TwainImpl>Default</TwainImpl>
<ExcludeBlankPages>false</ExcludeBlankPages>
<BlankPageWhiteThreshold>70</BlankPageWhiteThreshold>
<BlankPageCoverageThreshold>25</BlankPageCoverageThreshold>
<WiaOffsetWidth>false</WiaOffsetWidth>
<WiaRetryOnFailure>false</WiaRetryOnFailure>
<WiaDelayBetweenScans>false</WiaDelayBetweenScans>
<WiaDelayBetweenScansSeconds>2</WiaDelayBetweenScansSeconds>
<WiaVersion>Default</WiaVersion>
<FlipDuplexedPages>false</FlipDuplexedPages>
</ScanProfile>
</ArrayOfScanProfile>
after searching windows devices I found that the Driver Key {6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0000 is in here:
What I need is a PowerShell script or one-line script that gives me a Driver Key like "{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0000" with zeros or any number depending on how much scanners are connected to the machine (NOT Class GUID only {6BDD1FC6-810F-11D0-BEC7-08002BE2092F}), and Device Name like below:
Get-WmiObject Win32_PNPEntity | Where-Object { $_.PNPCLass -eq "Image"} | select *
Or
Get-WmiObject Win32_PnPSignedDriver | Where-Object { $_.PNPCLass -eq "Image" } | select *
Thanks in advance