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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с чтением из реестра 
V
    Опции темы
Proger101
Дата 27.5.2007, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хочу написать небольшую програму которая будет отображать список автозагружаемых программ.
Вот код процедуры которая читает реестр:
Код

procedure TForm1.ShowList;
var
  Reg      : TRegistry;
  KeyNames : TStrings;
  I        : Integer;
begin
  Grid.RowCount := 2;
  KeyNames := TStrings.Create;
  Reg := TRegistry.Create;

  Reg.RootKey := HKEY_LOCAL_MACHINE;

  Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False);

  Reg.GetKeyNames(KeyNames);

  for I := 0 to KeyNames.Count - 1 do
  begin
    Grid.RowCount := Grid.RowCount + 1;
    Grid.Cells[0, Grid.RowCount - 1] := KeyNames[I];

    Grid.Cells[1, Grid.RowCount - 1] := Reg.ReadString(KeyNames[I]);
  end;

    Grid.RowCount := Grid.RowCount - 1;


    Reg.Free;
    KeyNames.Free;
end;


Когда выполнение программы доходит до строки
  Reg.GetKeyNames(KeyNames);
выполнение процедуры прекрашается из-за ошибки 'AbstractError'.

Помогите!! В чем тут проблема?
Зарание благодарен.

Это сообщение отредактировал(а) Proger101 - 27.5.2007, 15:18
PM MAIL   Вверх
Yanis
Дата 27.5.2007, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111



Цитата(Proger101 @  27.5.2007,  16:14 Найти цитируемый пост)
TStrings;

Абстрактный класс.
Используй вместо него TStringList.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Proger101
Дата 28.5.2007, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Заработало!!
Спасибо!! Не знал такого...

PM MAIL   Вверх
Rouse_
Дата 28.5.2007, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 18
Всего: 29



еще хорошы было Reg.OpenKey проверить, может не хватиьт прав для доступа к HKLM


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
Proger101
Дата 28.5.2007, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хм... возникла ещё одна проблема....
После строки
Reg.GetKeyNames(KeyNames); 
(Уже внес изменения по совету Yanis-а)
массив строк так и остается пустым....
С чем это может быть связано?
PM MAIL   Вверх
Rouse_
Дата 28.5.2007, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 18
Всего: 29



Я же тебе сказал - проверь результат выполнения Reg.OpenKey


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
Yanis
Дата 28.5.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111



Proger101
Имеется ввиду, что для чтения настроек достаточно прав KEY_READ. Т.е.:
Код
TRegistry.Create(KEY_READ);



--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Proger101
Дата 28.5.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Все вопрос решился. Проблема состояла в использовании другой процедуры
GetKeyNames вместо GetValueNames

Это сообщение отредактировал(а) Proger101 - 28.5.2007, 16:24
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.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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