Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запись в реестр [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]

Бр,

Утечки, отсутсвия понятия о защите ресурсов, защита от ошибок пользователя, да еще и в системную, чужую ветку реестра залез.


Наверх

Титульная страница Поиск, карта сайта Написать письмо