Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.09.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.09.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
15-1247559834
Dennis I. Komarov
2009-07-14 12:23
2009.09.13
ico Windows


15-1246903377
TUser
2009-07-06 22:02
2009.09.13
"Экономия" на Линуксе


15-1247454719
Дмитрий С
2009-07-13 07:11
2009.09.13
Сертификаты FireFox


15-1247430614
Юрий
2009-07-13 00:30
2009.09.13
С днем рождения ! 13 июля 2009 понедельник


15-1247255297
Shyrick
2009-07-10 23:48
2009.09.13
Сложение чисел в двоичной системе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский