|
Вопрос # 5 042/ вопрос решён / |
|
Здравствуйте, уважаемые эксперты! Подскажите кто знает как открыть редактор реестра и в нём же чтоб открылась нужная ветка? Мои предположения сводятся к ShellExecute , но не знаю как это сделать.
 |
Вопрос задал: eclipse (статус: Посетитель)
Вопрос отправлен: 21 февраля 2011, 15:46
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, eclipse!
Напрямую так просто не получится. Но можно заюзать маленькую программку от Руссиновича RegJump - ей нужно передать путь и готово. А для запуска можно хоть WinExec использовать. (поиск по сайту приедет на десятки обсуждений того, как запускать программы).
Если же хочется без внешних программ, то можно посмотреть на это, хотя там на С#, но какая разница - идею можно подсмотреть.
Но есть ещё одна хитрая идея - дело в том, что RegEdit запоминает, какой ключ он открывал в последний раз. Если это дело подредактировать, а потом запустить его, то как раз откроется там, где нужно. Как это сделать - смотрим тут
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 21 февраля 2011, 16:04
Оценка за ответ: 5
Комментарий к оценке: Cпасибо! второй вариант попроще.
|
Мини-форум вопроса
Всего сообщений: 4; последнее сообщение — 22 февраля 2011, 11:53; участников в обсуждении: 2.
|
DNK (статус: Студент), 21 февраля 2011, 17:01 [#1]:
Точно помню. Такой вопрос уже кто-то задавал раньше.
"Digital Networked Knight"
|
21 февраля 2011, 21:15: Статус вопроса изменён на решённый (изменил автор вопроса — eclipse): решен
|
eclipse (статус: Посетитель), 22 февраля 2011, 10:11 [#2]:
Вот так примерно сделал:
Reg:= TRegistry.Create;
Reg.RootKey:= HKEY_CURRENT_USER;
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Applets\Regedit', False);
s:= Reg.ReadString('LastKey');
s:= Copy(s, 0, Pos('\HKEY', s));
s:= s + Copy(suiListView1.Items.Item[i].SubItems.Strings[0], 2,
Length(suiListView1.Items.Item[i].SubItems.Strings[0])-2);
Reg.WriteString('LastKey', s);
ShellExecute(0, 'open', 'regedit.exe', NiL, NiL, SW_SHOWNORMAL);
Reg.CloseKey;
Reg.Free;
|
|
DNK (статус: Студент), 22 февраля 2011, 11:17 [#3]:
Я бы сначала TRegistry выгрузил, а уже потом ShellExecute.
"Digital Networked Knight"
|
|
eclipse (статус: Посетитель), 22 февраля 2011, 11:53 [#4]:
Логично!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|