Главная страница
    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.49 MB
Время: 0.002 c
2-1392328243
Novicer
2014-02-14 01:50
2015.05.10
Как удалить несколько строк в таблице?


2-1392352421
lewka
2014-02-14 08:33
2015.05.10
SQL и DataSource


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


15-1411538185
ВладОшин
2014-09-24 09:56
2015.05.10
Хочу СкайпоАськоЖабер :)


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





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский