Вниз
Скачать: CL | DM;

Запись в реестр   Найти похожие ветки 

← →
petr   (2009-07-08 11:41) [0]

Здравствуйте!!! Подскажите пожалуйста, почему не происходит создание и запись значения параметра в реестр. Все Вроде правильно написано на мой взгляд.  Вот мой код
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-08 11:50) [1]

> petr  (08.07.2009 11:41:00)  [0]

Бр,

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


← →
Dennis I. Komarov ©   (2009-07-08 11:57) [2]


> да еще и в системную, чужую ветку реестра залез.

Ну чем же мы хуже мелкомягких...


← →
petr   (2009-07-08 12:05) [3]

Я просто учусь работать с реестром. Вот код
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;

не работает, хотя очень похож


← →
Anatoly Podgoretsky ©   (2009-07-08 12:09) [4]

А это похоже на лохотрон, мошенничество.


← →
Loginov Dmitry ©   (2009-07-08 22:58) [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), базы данных и т.п.


← →
Dennis I. Komarov ©   (2009-07-09 09:42) [6]


> petr   (08.07.09 12:05) [3]

У меня бы и первый не отработал :P

Создай себе ветку и учись, чего к мелкомягким то полез? У них вкуснее?


← →
brother ©   (2009-07-09 09:46) [7]

> чего к мелкомягким то полез? У них вкуснее?


> if reg.ValueExists("money") then

шифроваться от взлома вздумал имхо


← →
Dennis I. Komarov ©   (2009-07-09 09:57) [8]


> brother ©   (09.07.09 09:46) [7]

Ну-ну :)


← →
Anatoly Podgoretsky ©   (2009-07-09 12:35) [9]

> Dennis I. Komarov  (09.07.2009 09:42:06)  [6]

Надеется, что там меньше вероятность, что его пакость обнаружат.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.007 c
2-1247150550
Elephon
2009-07-09 18:42
2009.09.13
Загрузить в combobox имена папок из указанной директории


2-1247038910
petr
2009-07-08 11:41
2009.09.13
Запись в реестр


1-1215078860
DrPass
2008-07-03 13:54
2009.09.13
Секция finalization не выполняется


15-1247645444
TUser
2009-07-15 12:10
2009.09.13
Лиц. ПО в России


1-1214477815
yaric
2008-06-26 14:56
2009.09.13
выгрузка chartobject-а в html




   Наверх