Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Внимание! Есть замечания модератора по теме: Название темы по правилам форума должно адекватно отражать суть решаемой задачи/проблемы.
Старый 27.04.2012, 17:10   #1
SovereignSun
Форумчанин
 
Регистрация: 22.11.2011
Сообщений: 127
По умолчанию Показать список сервисов Windows (прочитать из реестра). Где ошибка?

Уже час мудохаюсь.. не понимаю, что не так. на форме ListBox (lst1) и все, должно считываться поле DisplayName с каждого сервиса, в будущем планирую менять подставлять в поле Memo данные по разным ключам при нажатии на сервис в ListBox.Items и popup на отключение и включение. Вот только на самой простой задачи застрял.

Код:
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('SYSTEM\CurrentControlSet\Services\', FALSE);
reg.GetKeyNames(lst1.Items);
for i:=0 to lst1.Count do
begin
  lst1.ItemIndex:=i;
  reg.OpenKey('SYSTEM\CurrentControlSet\Services\'+lst1.Items[lst1.ItemIndex], FALSE);
  ShowMessage('SYSTEM\CurrentControlSet\Services\'+lst1.Items[lst1.ItemIndex]+'   {'+reg.ReadString('DisplayName')+'}');
end;
reg.Free;
end;
SovereignSun вне форума Ответить с цитированием
Старый 27.04.2012, 17:24   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Сначала попробуйте:
Код:
for i:=0 to lst1.Count-1 do...
Упд Скомпилировал - ничего не показывает... будем думать...
Упд2 Запустил под администратором - показало список какой-то
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 27.04.2012 в 17:30.
BDA вне форума Ответить с цитированием
Старый 27.04.2012, 17:39   #3
SovereignSun
Форумчанин
 
Регистрация: 22.11.2011
Сообщений: 127
По умолчанию

насчет lst1.Count-1 уже проверял.. и так и так ничего не показывает, последняя запись в listbox соответствует общей сумме записей

насчет кода.. Очень странно то, что вручную указав по какому-то определенному сервису DisplayName (если таковой имееться) он его показывает, а через такой код не хочет, логике не поддается.

2 BDA: А случай если displayname вообще нет, это у нас какая команда отвечает?
Разве необходимо закрывать ключ, перед открытием?

Последний раз редактировалось SovereignSun; 28.04.2012 в 09:39.
SovereignSun вне форума Ответить с цитированием
Старый 27.04.2012, 18:35   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Вот так у меня работает:
Код:
var i: integer;
reg:tregistry;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('SYSTEM\CurrentControlSet\Services\', FALSE);
reg.GetKeyNames(lst1.Items);
reg.closekey;
listbox1.Clear;
for i:=0 to lst1.Count-1 do
begin
  lst1.ItemIndex:=i;
  reg.OpenKey('SYSTEM\CurrentControlSet\Services\'+lst1.Items[i], FALSE);
  listbox1.Items.Append('SYSTEM\CurrentControlSet\Services\'+lst1.Items[i]+'   {'+reg.ReadString('DisplayName')+'}');
  reg.CloseKey;
  end;
reg.Free;
end;
Ошибка возникает только с одной записью, у которой DisplayName не string, а multistring.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 02.05.2012, 01:52   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Не заметил ваших вопросов
Цитата:
А случай если displayname вообще нет, это у нас какая команда отвечает?
Похоже, что никакой.
Цитата:
Разве необходимо закрывать ключ, перед открытием?
Не знаю Но в самом цикле точно необходимо.

ПС В следующий раз так вопросы не задавайте) Я отслеживаю темы по новым сообщениям, а не захожу во все темы, где когда-либо писал.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
где прочитать? Аlex Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 07.04.2010 08:17
Прочитать DWORD из реестра Nester Общие вопросы Delphi 2 21.12.2009 20:20
Где прочитать про WinApi? jurij Win Api 1 27.05.2008 13:32
Список сервисов Баламут Win Api 4 10.12.2007 01:38
Как записать и прочитать переменную моего типа из реестра? Никки Общие вопросы Delphi 2 09.12.2007 13:56