![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запись в реестр [D7, XP]
petr © (2009-07-08 11:41:00)Здравствуйте!!! Подскажите пожалуйста, почему не происходит создание и запись значения параметра в реестр. Все Вроде правильно написано на мой взгляд. Вот мой код
ip := TRegistry.Create;
ip.RootKey:=HKEY_LOCAL_MACHINE;
ip.OpenKey('Software', true);
ip.OpenKey('Microsoft', true);
ip.OpenKey('Windows', true);
if ip.ValueExists('IP') then
begin
if ip.ReadString('IP')=Edit1.Text then
begin Showmessage('Вы уже работали с IP-адресом '+ip.ReadString('IP'));
button1.Enabled:=false; button2.Enabled:=false;exit;end
else
ip.writestring('IP',Edit1.Text);
ip.Free;
end;
Anatoly Podgoretsky (2009-07-09 12:35:00) [1]> Dennis I. Komarov (09.07.2009 09:42:06) [6]
Надеется, что там меньше вероятность, что его пакость обнаружат.
Dennis I. Komarov (2009-07-09 09:57:00) [2]
> brother © (09.07.09 09:46) [7]
Ну-ну :)
brother (2009-07-09 09:46:00) [3]> чего к мелкомягким то полез? У них вкуснее?
> if reg.ValueExists(' money') then
шифроваться от взлома вздумал имхо
Dennis I. Komarov (2009-07-09 09:42:00) [4]
> petr (08.07.09 12:05) [3]
У меня бы и первый не отработал :P
Создай себе ветку и учись, чего к мелкомягким то полез? У них вкуснее?
Loginov Dmitry (2009-07-08 22:58:00) [5]
> Я просто учусь работать с реестром.
Несмотря на не слишком уж и большой объем кода, ошибок слишком много. Нужно хотя бы так:
ip := TRegistry.Create;
try
ip.RootKey:=HKEY_LOCAL_MACHINE;
if ip.OpenKey('Software\Microsoft\Windows', True) then
begin
if ip.ValueExists('IP') then
begin
if ip.ReadString('IP')=Edit1.Text then
begin
Showmessage('Вы уже работали с IP-адресом '+ip.ReadString('IP'));
button1.Enabled:=false;
button2.Enabled:=false;
exit;
end else
ip.writestring('IP',Edit1.Text);
end;
end else
raise Exception.Create('Не удалось открыть раздел Software\Microsoft\Windows '+
'для записи. Вероятно, у пользователя не достаточно прав.');
finally
ip.Free;
end;
И лезть в системный раздел HKEY_LOCAL_MACHINE часто не обязательно. Он требует на запись права администратора. Запустил программу под администратором, сменил настройки, пользователь без прав их не испортит. Чтение - без проблем, но с помощью OpenKeyReadOnly.
Для хранения пользовательских параметров (своих для каждого пользователя) используется раздел HKEY_CURRENT_USER. Для всех прочих параметров используются файлы конфигурации (ini, xml), базы данных и т.п.
Anatoly Podgoretsky (2009-07-08 12:09:00) [6]А это похоже на лохотрон, мошенничество.
petr (2009-07-08 12:05:00) [7]Я просто учусь работать с реестром. Вот код
REG := TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey('Software', true);
reg.OpenKey('Microsoft', true);
reg.OpenKey('Windows', true);
if reg.ValueExists('money') then
else begin
reg.writestring('money','0'); end;
все работает, а
ip := TRegistry.Create;
ip.RootKey:=HKEY_LOCAL_MACHINE;
ip.OpenKey('Software', true);
ip.OpenKey('Microsoft', true);
ip.OpenKey('Windows', true);
if ip.ValueExists('IP') then
begin
if ip.ReadString('IP')=Edit1.Text then
begin Showmessage('Вы уже работали с IP-адресом '+ip.ReadString('IP'));
button1.Enabled:=false; button2.Enabled:=false;exit;end
else
ip.writestring('IP',Edit1.Text);
ip.Free;
end;
не работает, хотя очень похож
Dennis I. Komarov (2009-07-08 11:57:00) [8]
> да еще и в системную, чужую ветку реестра залез.
Ну чем же мы хуже мелкомягких...
Anatoly Podgoretsky (2009-07-08 11:50:00) [9]> petr (08.07.2009 11:41:00) [0]
Бр,
Утечки, отсутсвия понятия о защите ресурсов, защита от ошибок пользователя, да еще и в системную, чужую ветку реестра залез.