TRegistry - глюки Builder-а?

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
BreakPointMAN
Сообщения: 38
Зарегистрирован: 21 июн 2004, 02:59
Откуда: Saratov
Контактная информация:

Всем привет!

Итак, что имеем:
  • C++ Builder 6 (Build 10.166 Update 4)
  • программу, использующую класс TRegistry для доступа к реестру
  • и операционную систему MS Windows 2000 SP4
Вообщем, все бы ничего, но стал я наблюдать некоторые странные вещи при работе с реестром. А именно в следующих случаях:
  • при установке текущими некоторых ключей (с помощью методов OpenKey/OpenKeyReadOnly)
  • при попытке получить имена субключей в некоторых случаях (с помощью метода GetKeyNames)
Ну, насчет первого пункта, в принципе, можно найти объяснения, например, нехватка прав или попытка доступа к системным ветвям (таким образом у меня не открылись, например, HKEY_LOCAL_MACHINE\SAM\SAM, HKEY_LOCAL_MACHINE\SECURITY и еще ряд ключей). Да и Borland где-то писала, что такого плана вещи читать лучше через WinAPI (если это еще Windows даст... :D )


Но как объяснить следующее?!

При получении имен субключей текущего ключа в некоторых случаях они [имена] оказываются усеченными! Причем, в прямом смысле...
Например, мне возвращается: "Remova" вместо "RemovableMedia" (это ветка HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\STORAGE\) или ".NET CLR Networki" вместо ".NET CLR Networking" (ветка HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\) и еще в ряде случаев...

Что еще более странно, иногда в качестве имен субключей возвращаются пустые значения! Например, в разделе HKEY_LOCAL_MACHINE в ветке SYSTEM\ControlSet002\Control\Class\{4D36E96D-E325-11CE-BFC1-08002BE10318} есть два вполне нормальных субключа "0000" и "0001" - вместо них мне возвращается пустая строка...

Всего по всем разделам и веткам реестра таких "глючных" ключей набегает около 200 штук.
В принципе, и хрен бы с ним, не так уж они мне и нужны... Просто интересно, это я что-то делаю не так или это очередной Builder-овский глюк?

Если кому интересно, могу выложить исходник, но вроде бы в нем все верно, там строится дерево TreeView и заполняется именами ключей, все это проделывается рекурсивно...

А если кто сталкивался с такой штукой - плз поделитесь, что вы думаете на этот счет?
Ответить