Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.12.2012, 16:43
Аватар для MORPEH
MORPEH MORPEH вне форума
Прохожий
 
Регистрация: 22.03.2010
Сообщения: 17
Репутация: 10
По умолчанию Реестр + Delphi 2010

Здравствуйте. Никак не могу решить проблему. Пытаюсь проверить на существование. Но, что-то не так. Почему-то ее не находит, хотя она точно есть. Пытался заменить пробелы, кодами, а так же utf8encode использовать. Но все не помогает. Подскажите, в чем проблема?

Код:
test_key:= TRegistry.Create;
try
  test_key.RootKey := HKEY_LOCAL_MACHINE;
  if test_key.KeyExists('SOFTWARE\Microsoft\Microsoft SQL Server 2005 Redist') then
lbl22.Caption:= 'Тест пройден'
else lbl22.Caption:= 'Тест не пройден';
test_key.CloseKey;
finally
test_key.Free;

lmikle: пользуемся правильными тегами.

Последний раз редактировалось lmikle, 12.12.2012 в 20:10.
Ответить с цитированием
  #2  
Старый 12.12.2012, 16:54
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

"в двойных кавычках попробуй"
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 12.12.2012, 16:58
Аватар для MORPEH
MORPEH MORPEH вне форума
Прохожий
 
Регистрация: 22.03.2010
Сообщения: 17
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
"в двойных кавычках попробуй"
Ошибку выдает
Ответить с цитированием
  #4  
Старый 12.12.2012, 17:09
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от MORPEH
Пытаюсь проверить на существование. Но, что-то не так. Почему-то ее не находит, хотя она точно есть. Пытался заменить пробелы, кодами, а так же utf8encode использовать. Но все не помогает. Подскажите, в чем проблема?
Должно нормально работать. В Delphi 7 так точно работает - проверил. Такой ключ действительно существует? Попробуй ещё добавить слэш вначале: "...KeyExists('\SOFTWARE\...".
Какая версия Windows?
Ответить с цитированием
  #5  
Старый 12.12.2012, 17:26
Аватар для MORPEH
MORPEH MORPEH вне форума
Прохожий
 
Регистрация: 22.03.2010
Сообщения: 17
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Должно нормально работать. В Delphi 7 так точно работает - проверил. Такой ключ действительно существует? Попробуй ещё добавить слэш вначале: "...KeyExists('\SOFTWARE\...".
Какая версия Windows?

Ключ существует, вытащил из самого реестра. Это ключ Microsoft Sql Server. По нему хочу проверять, если он или нету.
Windows 7 у меня
Ответить с цитированием
  #6  
Старый 12.12.2012, 17:55
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от MORPEH
Ключ существует, вытащил из самого реестра. Это ключ Microsoft Sql Server. По нему хочу проверять, если он или нету.
Windows 7 у меня
А битность какая? 32 или 64.
Приложения 32-битные под Windows 64-битной запускаются не "напрямую", а с помощью подсистемы WOW64 и некоторые ветки реестра переназначаются в другое место. Стандартный же Windows-кий редактор реестра имеет ту же разрядность, что и сама Windows, и поэтому он видит ветки реестра по-другому.
Подробнее смотри тут:
Изменения реестра в 64-разрядных версий...
Registry Keys Affected by WOW64
Ответить с цитированием
  #7  
Старый 12.12.2012, 20:04
Аватар для MORPEH
MORPEH MORPEH вне форума
Прохожий
 
Регистрация: 22.03.2010
Сообщения: 17
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
А битность какая? 32 или 64.
Приложения 32-битные под Windows 64-битной запускаются не "напрямую", а с помощью подсистемы WOW64 и некоторые ветки реестра переназначаются в другое место. Стандартный же Windows-кий редактор реестра имеет ту же разрядность, что и сама Windows, и поэтому он видит ветки реестра по-другому.
Подробнее смотри тут:
Изменения реестра в 64-разрядных версий...
Registry Keys Affected by WOW64

64 разрядная. А можно пример, как это в делфи сделать?
Ответить с цитированием
  #8  
Старый 13.12.2012, 02:13
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от MORPEH
64 разрядная. А можно пример, как это в делфи сделать?
Ну тогда это и есть скорее всего причина того, что твой код такой ключ не находит. Т.е. твоё 32-битное приложение будучи запущенным на 64-битном Windows-е, проверяя существование ветки реестра "SOFTWARE\Microsoft\Microsoft SQL Server 2005 Redist" в действительности проверяет существование ветки "SOFTWARE\WOW6432node\Microsoft\Microsoft SQL Server 2005 Redist", которой подозреваю действительно не существует.
Для решения этой проблемы у тебя есть как минимум 2 варианта:
1) Установить Delphi XE2/XE3 и скомпилировать своё приложение как 64-битное.
2) Воспользоваться соответствующими API-функциями:
RegQueryReflectionKey - проверяет производится ли перенаправление указанного ключа реестра
RegDisableReflectionKey - отключает перенаправление указанного ключа реестра
RegEnableReflectionKey - восстанавливает перенаправление указанного ключа реестра
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:25.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025