Текущий архив: 2006.05.07;
Скачать: CL | DM;
ВнизРеестр Windows Найти похожие ветки
← →
zaN0za © (2006-02-12 21:28) [0]Доброго времени суток.
У меня такой вопрос:
я хочу получить значение определенного ключа реестра
const
KeyName = "MyKey"
var
Key: HKEY;
begin
RegOpenKeyEx(HKEY_CURRENT_USER, "SOFTWARE\MySoft", 0, KEY_ALL_ACCESS, TempKey);
// здесь есть ключ "MyKey"
// как мне получить его значение?
// если можно с примером
end;
Спасибо за внимание.
← →
begin...end © (2006-02-12 21:35) [1]RegQueryValueEx. Пример см. в исходнике метода TRegistry.GetData (модуль Registry).
← →
zaN0za © (2006-02-13 00:46) [2]Пытаюсь сделать таким образом:
procedure ReadKeyValue;
var
RegKey : HKEY;
Buffer : PChar;
dwSize : DWORD;
begin
dwSize := SizeOf(PChar);
RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"\Software\Microsoft\Windows\CurrentVersion\Run",
0, KEY_ALL_ACCESS, RegKey);
RegQueryValueEx(RegKey, "TaskSwitchXP", nil, nil, Pbyte(Buffer), @dwSize);
RegCloseKey(RegKey);
MessageBox(0, Buffer, "Test", 0);
end;
MessageBox выдает пустую строку... Что я делаю не правильно?
← →
frame © (2006-02-13 01:26) [3]Допиши это после RegOpenKeyEx(...) :
RegQueryValueEx(RegKey, "TaskSwitchXP", nil, nil, nil, @dwSize);
← →
begin...end © (2006-02-13 11:30) [4]> zaN0za © (13.02.06 00:46) [2]
Во-первых, см. [3] -- перед получением значения параметра нужно выяснить, сколько это значение занимает места в памяти.
Нужно это для того, чтобы выделить нужное количество памяти под буфер, в который это значение будет помещено. Поэтому (и это во-вторых) надо добавить ещё и код выделения/освобождения памяти для буфера.
В-третьих, для открытия подключа в его имени не надо первым символом указывать "\".
И, наконец, в-четвёртых: параметра "TaskSwitchXP" в указанном разделе реестра моей XP нет.
:о)
Но если у Вас он есть, то код может быть примерно таким:var
RegKey: HKEY;
Buffer: PChar;
Size: DWORD;
begin
if RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
"Software\Microsoft\Windows\CurrentVersion\Run",
0,
KEY_QUERY_VALUE, // А действительно ли здесь нужен полный доступ?
RegKey) = ERROR_SUCCESS then
begin
RegQueryValueEx(RegKey, "TaskSwitchXP", nil, nil, nil, @Size);
GetMem(Buffer, Size);
try
if RegQueryValueEx(RegKey, "TaskSwitchXP", nil, nil, PByte(Buffer), @Size) = ERROR_SUCCESS then
MessageBox(0, Buffer, "Test", 0)
finally
FreeMem(Buffer)
end
end
end
← →
Игорь Шевченко © (2006-02-13 12:03) [5]uses Registry
Страницы: 1 вся ветка
Текущий архив: 2006.05.07;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.011 c