Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Найти количество подразделов в разделе. (http://forum.oszone.net/showthread.php?t=153873)

zxch 21-10-2009 15:17 1248790

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

amel27 21-10-2009 16:12 1248844

Цитата:

Цитата zxch
Помогите пожалуйста ссылкой/советом/куском кода. »

Код:

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 1249063

amel27
Спасибо Вам, то что нужно!

mbf-4 25-03-2011 16:36 1643745

Цитата:

Цитата amel27
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 1643757

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


Время: 01:40.

Время: 01:40.
© OSzone.net 2001-