Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2015.05.10;
Скачать: CL | DM;

Вниз

Чтение из реестра   Найти похожие ветки 

 
alexdn ©   (2014-02-13 20:38) [0]

У меня уже волосы дыбом встают, в одном проекте код работает, в другом нет (при пошаговой отладке), прямо волшебство какое-то.. Что здесь может быть не так?
var Reg:TRegistry;
               Regstr:string;

Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey("\SOFTWARE\тратата",TRUE);
Regstr:=Reg.ReadString("STR");
Reg.CloseKey;
Reg.Free;


 
Rouse_ ©   (2014-02-13 20:44) [1]

Оть тут скорее всего:


> Reg.RootKey:=HKEY_LOCAL_MACHINE;
> Reg.OpenKey("\SOFTWARE\тратата",TRUE);


1. если что, OpenKey - это функция
2. пытающаяся писать в защищенный раздел реестра (второй параметр)

Reg.OpenKeyReadOnly - должно спасти ОРД :)


 
Rouse_ ©   (2014-02-13 20:45) [2]

зы: и слэш перед "SOFTWARE" убери.


 
alexdn ©   (2014-02-13 20:58) [3]

> Rouse_ ©   (13.02.14 20:44) [1]
спасибо большое, с OpenKeyReadOnly начало работать, теперь только с записью проблема, тоже видно что то не то.

 Reg2:=TRegistry.Create;
 Reg2.RootKey:=HKEY_LOCAL_MACHINE;
 Reg2.OpenKey("SOFTWARE\тратата",true);
 Reg2.WriteString("STR","111"); //DateToStr(now)
 Reg2.CloseKey;
 Reg2.Free;


 
Rouse_ ©   (2014-02-13 21:03) [4]

Эмм...
Ну, как-бы да, ключ открывается только на чтение, поэтому писать и не можешь.
Если хочешь писать в данную ветку тебе (к слову о привилегиях) немножко админские права нужны (или SYSTEM, если сервисом работаешь).


 
alexdn ©   (2014-02-13 21:14) [5]

> Rouse_ ©   (13.02.14 21:03) [4]
Где что можно посмотреть на этот счёт? как открыть ключ на письмо и что можно посмотреть про админские права?


 
Rouse_ ©   (2014-02-13 21:19) [6]


> alexdn ©   (13.02.14 21:14) [5]
> Где что можно посмотреть на этот счёт? как открыть ключ
> на письмо и что можно посмотреть про админские права?

Пфф...
Ну технически только MSDN: http://msdn.microsoft.com/en-us/library/ms724871(v=vs.85).aspx


 
Dennis I. Komarov ©   (2014-02-13 23:30) [7]

Тут другая политика: а с какого перепугу твой софт в HKLM писать желает?


 
alexdn ©   (2014-02-14 00:05) [8]

Блин, заработало когда запустил программу от имени администратора, но это конечно не есть гут..

> Dennis I. Komarov ©   (13.02.14 23:30) [7]
> Тут другая политика: а с какого перепугу твой софт в HKLM
> писать желает?
Действительно интересный вопрос, а куда лучше вообще писать? я в смысле чтоб это работало и на других машинах, а то не хорошо получить от пользователя уведомление что программу "выбрасывает"..


 
alexdn ©   (2014-02-14 00:11) [9]

Наверно лучше писать в HKEY_CURRENT_USER\Software


 
Германн ©   (2014-02-14 00:11) [10]


>  куда лучше вообще писать?

Только в HKCU.
P.S.
Где ты был последние годы что вылез сейчас с этим вопросом?


 
alexdn ©   (2014-02-14 00:19) [11]

Всё, всё получилось).


 
alexdn ©   (2014-02-14 00:36) [12]

Теперь 10 дневный триал я сам напишу.. Конечно простая запись в реестр при желании будет легко отлавливаться, но для рядового пользователя этого будет вполне достаточно..


 
han_malign   (2014-02-14 08:43) [13]


> Только в HKCU.

- в W7 оно может по домену гулять, поэтому там есть еще
const HKEY_CURRENT_USER_LOCAL_SETTINGS = DWORD($80000007);
function _regHKCULocal: HKEY;
var
  OS  : TOSVersionInfo;
begin
  OS.dwOSVersionInfoSize := sizeof(OS);
  if( GetVersionEx(OS) and (OS.dwPlatformId = VER_PLATFORM_WIN32_NT{JIC})
      and //W7, 2008 R2 - 6.1
      (OS.dwMajorVersion >= 6) and
      (OS.dwMajorVersion + OS.dwMinorVersion > 6){(6+n)+(1+n)}
  )then
     Result:= HKEY_CURRENT_USER_LOCAL_SETTINGS
  else
     Result:= HKEY_CURRENT_USER;
end;

- который где-то в HKLM прячется...


 
Inovet ©   (2014-02-14 09:59) [14]

> [3] alexdn ©   (13.02.14 20:58)
> с записью проблема

Ну так очевидно надо не
Reg2.RootKey:=HKEY_LOCAL_MACHINE;
а
Reg2.RootKey:=HKEY_CURRENT_USER;


 
Dennis I. Komarov ©   (2014-02-14 10:57) [15]


> Теперь 10 дневный триал я сам напишу.. Конечно простая запись
> в реестр при желании будет легко отлавливаться, но для рядового
> пользователя этого будет вполне достаточно..

У, Сир, сейчас Вы получите другие грабли... Розыч же сказал, в тело (хвост) и при инсталляции (при первом запуске, с правами админа)


 
Rouse_ ©   (2014-02-14 22:59) [16]


> alexdn ©   (14.02.14 00:36) [12]
> Теперь 10 дневный триал я сам напишу..

Здесь тож задублирую, а то вдруг ты первую ветку не прочитал :)
http://alexander-bagel.blogspot.ru/2014/02/blog-post.html


 
Dennis I. Komarov ©   (2014-02-15 00:18) [17]


> Здесь тож задублирую, а то вдруг ты первую ветку не прочитал
> :)
> http://alexander-bagel.blogspot.ru/2014/02/blog-post.html

Да какой там, если он "триал" в HKCU пишет...


 
Rouse__   (2014-02-15 00:22) [18]

В hkcu один из правильных вариантов - почему бы и нет?


 
Dennis I. Komarov ©   (2014-02-15 00:32) [19]


> В hkcu один из правильных вариантов - почему бы и нет?

Ну дык это при условии 10 дён на юзверя


 
alexdn ©   (2014-02-15 02:01) [20]

Да, интересная статья, хвост я и сделал, вообщем всё нормально, я думаю будет достаточно.



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

Текущий архив: 2015.05.10;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.006 c
15-1411158602
Юрий
2014-09-20 00:30
2015.05.10
С днем рождения ! 20 сентября 2014 суббота


15-1411666339
Rouse_
2014-09-25 21:32
2015.05.10
Новые правила для конференции "Прочее"


6-1275899490
ocean
2010-06-07 12:31
2015.05.10
Как задать пароль


15-1411448494
Demo
2014-09-23 09:01
2015.05.10
Веб-разработка, пару вопросов


2-1392328243
Novicer
2014-02-14 01:50
2015.05.10
Как удалить несколько строк в таблице?