Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TRegistry, не читаются имена подключей ветки 
V
    Опции темы
CynicRus
Дата 11.8.2015, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 31.5.2012

Репутация: 1
Всего: 5



Добрый день господа.  Возникла следующая проблема: не могу прочитать значения ключей из определенной ветки реестра.
Объявляю ветку константой:
Код

    const
       MyKey = '\SOFTWARE\Microsoft\Windows Portable Devices\Devices'


И делаю с ней следующее:
Код

    var
      Str: TStringList;
      Reg: TRegistry;
    begin
      Str := TStringList.Create;
      Reg := TRegistry.Create;
      Reg.RootKey:=HKEY_LOCAL_MACHINE;
      try
        if Reg.OpenKeyReadOnly(MyKey) then
        begin
          Reg.GetKeyNames(Str);
          Str.SaveToFile('C:\Devices.txt');
        end;
      finally
        Reg.CloseKey;
        Str.Free;
      end;
    end;


и в Str - Count = 0. При этом, если скормить ветку \SOFTWARE\Microsoft\Windows Portable Devices - то GetKeyNames отрабатывает корректно. Это глюк TRegistry, или я что-то не так делаю? Права все стоят как надо. Данные регедитом вижу. Странно.

Delphi XE7 + Windows7 x64 Ultimate
PM MAIL   Вверх
CynicRus
Дата 12.8.2015, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 31.5.2012

Репутация: 1
Всего: 5



Вообщем решил задачу через WinApi:
Код

function GetSubkeys(MainKey: LongInt; aKey: string; var aList: TStringList): Boolean;
var
  hRoot: HKEY;
  lItem: LongInt;
  hError: LongInt;
  szKey, pData: PChar;
  aString: string;
begin
  Result := false;
  if aList = nil then
    exit;
  try
    szKey := StrAlloc(Length(aKey) + 1);
    StrPCopy(szKey, aKey);
    lItem := 0;
    pData := StrAlloc(1024);
    hError := RegOpenKeyEx(MainKey, szKey, 0, Key_Read or KEY_WOW64_64KEY, hRoot);
    if hError = ERROR_SUCCESS then
    begin
      while (hError = ERROR_SUCCESS) do
      begin
        hError := RegEnumKey(hRoot, lItem, pData, 1024);
        if (hError = ERROR_SUCCESS) then
        begin
          Result := true;
          aList.Add(StrPas(pData));
          Inc(lItem);
        end;
      end;
      RegCloseKey(hRoot);
    end;
  finally
    StrDispose(szKey);
    StrDispose(pData);
  end;
end;

но категорически непонятно, почему она не решается через TRegistry с тем же ключём.
PM MAIL   Вверх
b8195108
Дата 26.9.2015, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 17.7.2011

Репутация: нет
Всего: 2



Код

Reg := TRegistry.Create(KEY_WOW64_64KEY);


Добавлено через 2 минуты и 34 секунды
ЗЫ в вашем коде явные и неявные мемлики
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0993 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.