Войти

Показать полную графическую версию : [решено] Найти количество подразделов в разделе.


zxch
21-10-2009, 15:17
[забыл подписать в заголовке "Работа с Реестром."]
Здравствуйте, возникла необходимость посчитать в заданном разделе количество подразделов. Ну и записать имена подразделов в массив например. Помогите пожалуйста ссылкой/советом/куском кода.

amel27
21-10-2009, 16:12
Помогите пожалуйста ссылкой/советом/куском кода. »
Const HKCR = &H80000000
Const HKCU = &H80000001
Const HKLM = &H80000002
Const HKU = &H80000003

Dim objReg, strPath, arrSubKeys

Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strPath = "Software"

objReg.EnumKey HKLM, strPath, arrSubKeys

' ----------------------------------------
' Вывод массива и его размерности на экран
' ----------------------------------------

If Not(IsArray(arrSubKeys)) Then WScript.Quit
strSubKeys = UBound(arrSubKeys) & vbCrLf & "---" & vbCrLf

For Each strSubKey In arrSubKeys
strSubKeys = strSubKeys & strSubKey & vbCrLf
Next

WScript.Echo strSubKeys

zxch
21-10-2009, 21:43
amel27
Спасибо Вам, то что нужно!

mbf-4
25-03-2011, 16:36
If Not(IsArray(arrSubKeys)) Then WScript.Quit

Не мог бы кто нибудь сказать почему метод EnumKey бывает что возвращает не массив а NULL? тут столь элегантно обходится этот вопрос...
Например, пытаюсь прочитать подразделы ключа:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate

в результате при перечислении в цикле обращение к arrSubKeys бомбит ошибками типа "обьект не является семейством", "несоответствие типа" и пр... такое бывает на разных ключах, влияние разрешений на ветку не выявлено.

mbf-4
25-03-2011, 17:04
Похоже что на системах Win7x64 скрипт читает этот раздел из ветки WOW6432Node, где WindowsUpdate соотв-но нету, отсюда нестыковки. Походу дело в этом... и как быть тогда?




© OSzone.net 2001-2012