![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
RegOpenKey [D6, WinXP]
psa247 © (2005-05-08 12:36:00)
reg : hkey;
tmp : string;
begin
RegOpenKey(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\', reg);
tmp:= Path+'\'+ Check_OS +' /start';
if CBMain.Checked then
RegSetValue(reg,'UMP',REG_SZ,PChar(tmp),sizeof(tmp))
else RegDeleteKey(reg, 'UMP');
RegCloseKey(reg);
Подскажите, почему в значении параметра "UMP" пишется бред?
Заранее благодарен
psa247 (2005-05-08 14:11:00) [1]Видел в FAQ вопрос по косяку TRegistry с доступом к HKLM, да и весит он много. Пришлось проект переписывать на WinAPI
Eraser (2005-05-08 13:53:00) [2]psa247 ©
Я вообще пользуюсь TRegistry.... имхо удобнее.
psa247 (2005-05-08 13:46:00) [3]Вот что накопал:
The RegOpenKeyfunction opens the specified key. This function is provided for compatibility with Windows version 3.1. Win32-based applications should use the RegOpenKeyEx function.
The RegSetValuefunction associates a value with a specified key. This value must be a text string and cannot have a name. This function is provided for compatibility with Windows version 3.1. Win32-based applications should use the RegSetValueEx function, which allows an application to set any number of named values of any data type.
Т.е. вот так будет правильно
RegOpenKeyEX(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 0, KEY_SET_VALUE, reg);
tmp:= Path+'\'+ Check_OS +' /start';
if CBMain.Checked then begin
RegSetValueEX(reg, 'UMP',0,REG_SZ, PChar(tmp), Length(tmp));
end
else RegDeleteKey(reg, 'UMP');
RegCloseKey(reg);
Спасибо
VMcL (2005-05-08 12:41:00) [4]>> psa247 © (08.05.05 12:36)
> Подскажите, почему в значении параметра "UMP" пишется бред?
Потому что sizeof(tmp) = 4
RegSetValue(reg, 'UMP', REG_SZ, PChar(tmp), Length(tmp))
Eraser (2005-05-08 12:40:00) [5]psa247 ©
Потому, что tmp должна иметь тип PChar, и у для неё должна быть выделена память (GetMem).