Поиск ключа реестра во всех подразделах пути - PullRequest
3 голосов
/ 30 ноября 2011

Я хочу найти ключ "Параметры устройства" в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IDE.

Но BD/DVD/CD ROM/Writers создает разные ключи в каждой системе. Мой в настоящее время HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IDE\CdRomHL-DT-ST_DVDRAM_GH20NS15________________IL00____\5&15602d3e&0&0.1.0\Device Parameters.

Но я хочу найти каждый подраздел в IDE и в BD/DVD/CD ROM/Writers, чтобы получить параметры устройства. Существует двоичное значение DefaultDVDregion, и я хочу установить его в 0 для каждого BD/DVD/CD ROM/Writers.

Я бы хотел сделать это в VBScript.

1 Ответ

5 голосов
/ 06 декабря 2011

Этот код будет перебирать все ключи в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IDE и, для каждого ключа, заглядывать внутрь него, чтобы распечатать значение DWORD DefaultDvdRegion.

Option Explicit
Const HKEY_LOCAL_MACHINE = &H80000002
Dim oReg : Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
Dim oShell : Set oShell = CreateObject("WScript.Shell")
Dim sPath, aSub, sKey, aSubToo, sKeyToo, dwValue

' Get all keys within sPath
sPath = "SYSTEM\CurrentControlSet\Enum\IDE"
oReg.EnumKey HKEY_LOCAL_MACHINE, sPath, aSub

' Loop through each key
For Each sKey In aSub
    ' Get all subkeys within the key 'sKey'
    oReg.EnumKey HKEY_LOCAL_MACHINE, sPath & "\" & sKey, aSubToo
    For Each sKeyToo In aSubToo
        ' Try and get the DWORD value in Device Parameters\DefaultDvdRegion
        oReg.GetDWORDValue HKEY_LOCAL_MACHINE, sPath & "\" & sKey & "\" & sKeyToo & "\Device Parameters", "DefaultDvdRegion", dwValue
        Wscript.Echo "DVDRegion of " & sPath & "\" & sKey & "\" & sKeyToo & " = " & dwValue
    Next
Next

Это не мой лучший код, но должен дать вам то, что вы ищете. На моей машине я получаю следующий вывод:

DVDRegion of SYSTEM\CurrentControlSet\Enum\IDE\CdRomOptiarc_DVD_RW_AD-7200S_________________1.0A____\5&3308a5ad&0&1.0.0 = 2  
DVDRegion of SYSTEM\CurrentControlSet\Enum\IDE\DiskSAMSUNG_HD103UJ_________________________1AA01113\5&76d4b99&0&0.0.0 =

Что имеет смысл, потому что мой привод DVD имеет код региона 2 (Европа), а мой жесткий диск не имеет кода региона.

...