Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
 Аватар для S0lexV
21 / 21 / 7
Регистрация: 27.07.2011
Сообщений: 330

Наличие параметра в ключе реестра, всегда FALSE

13.02.2017, 00:08. Показов 668. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет

Пишу так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
 TRegistry *Reg = new TRegistry;
  Reg->RootKey = HKEY_LOCAL_MACHINE;
  Reg->OpenKey("SOFTWARE\\Asw",false);
if (Reg->ValueExists("dpar"))
   {
 
   ShowMessage ("Есть");
   }
   else
   {
    ShowMessage ("Нету");
   }
Всегда говорит что "Нету" хотя параметр есть:
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.02.2017, 00:08
Ответы с готовыми решениями:

Doc.save(false, False) = Всегда Возвращает False
Собственно база находится локально - не реплика f = doc.save(false, false) когда документ создаётся впервые то True если документ...

Имена в ключе реестра
Как считать все имена с ключа реестра і добавить их в ComboBox1.items Именно не ключи а значения имени в Ключе !!! Если не тяжело дайте...

RegQueryValueEx не выдаёт инфу о ключе реестра
Вообщем такой код с инфой о проце - работает: HKEY hkey; TCHAR ProcessorNameString = { '\0' }; DWORD cData = 255; ...

10
Модератор
 Аватар для D1973
9924 / 6460 / 2457
Регистрация: 21.01.2014
Сообщений: 27,410
Записей в блоге: 3
13.02.2017, 13:55
S0lexV, параметр есть, а значения у него и нету...
0
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
13.02.2017, 13:59
У меня просит есть.
А так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    TRegistry *Reg = new TRegistry;
    Reg->RootKey = HKEY_LOCAL_MACHINE;
    Reg->OpenKey("SOFTWARE\\Asw",false);
 
    LPVOID lpMsgBuf;
    FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
    NULL,GetLastError(),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
    (LPTSTR) &lpMsgBuf,0, NULL );
    MessageBox(NULL, (LPCTSTR)lpMsgBuf, TEXT("Error"), MB_OK);
    LocalFree( lpMsgBuf );
 
if (Reg->ValueExists("dpar"))
    {
 
    ShowMessage ("Есть");
    }
    else
    {
     ShowMessage ("Нету");
    }
0
 Аватар для S0lexV
21 / 21 / 7
Регистрация: 27.07.2011
Сообщений: 330
13.02.2017, 14:25  [ТС]
Вообщем на моей машине Семерка : параметр в ключе не видит.
Запустил на виртуальной машине: на ХР видит, проблем нету
На виртуальной Win 10 не видит, так же как на моей Семерке
Везде запускаю из под админа
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
13.02.2017, 15:17
У вас с правами что-то... . У меня их достаточно и на win7 max и pro параметр видит.
Попробуйте с другой ветвью: не local_machine, а current_user.
0
 Аватар для S0lexV
21 / 21 / 7
Регистрация: 27.07.2011
Сообщений: 330
13.02.2017, 15:26  [ТС]
CURRENT_USER работает....
С правами действительно что то.
Вот такая штука есть в Registry.hpp
C++
1
2
__fastcall TRegistry(void)/* overload */;
__fastcall TRegistry(unsigned AAccess)/* overload */;
Как туда правильно прописать параметр KEY_ALL_ACCESS
Возмножно это даст полный доступ к реестру ?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
13.02.2017, 15:31
S0lexV, битность ОС какова?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
13.02.2017, 15:44
Цитата Сообщение от S0lexV Посмотреть сообщение
Как туда правильно прописать параметр KEY_ALL_ACCESS
Попробуйте
C++
1
 TRegistry *Reg = new TRegistry(0x3F);
хотя я не думаю, что это поможет (и, кстати, ваша ситуация у меня не воспроизводится; параметр получаю всегда, даже меняя права).
0
 Аватар для S0lexV
21 / 21 / 7
Регистрация: 27.07.2011
Сообщений: 330
13.02.2017, 16:31  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
S0lexV, битность ОС какова?
х64
и на W7 и на W10
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33399 / 21509 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
13.02.2017, 16:41
S0lexV, значит, пробуй открывать реестр с ключом KEY_WOW64_64KEY
1
 Аватар для S0lexV
21 / 21 / 7
Регистрация: 27.07.2011
Сообщений: 330
13.02.2017, 21:16  [ТС]
И кстати не создает параметры:
C++
1
2
3
4
5
6
7
 TRegistry *Reg = new TRegistry;
    Reg->RootKey = HKEY_CURRENT_USER;
    Reg->OpenKey("SOFTWARE",true);
    Reg->OpenKey("Asw",true);
    Reg->WriteString("dpar","13");
 
    delete Reg;
не создает.
А если в CURRENT_USER то создает

Добавлено через 4 минуты
Цитата Сообщение от volvo Посмотреть сообщение
S0lexV, значит, пробуй открывать реестр с ключом KEY_WOW64_64KEY
C++
1
TRegistry *Reg = new TRegistry(KEY_WOW64_64KEY);
Так ?

Пробую, без результата.
Если вызвать
C++
1
ShowMessage(Reg->CurrentPath);
Стал пустое сообщение показывать, как будт вообще не зашел в реестр

Дичь какая то..

Добавлено через 11 минут
Вот ведь оно че Михалыч...

2) Если программа 32-битная, а система 64-битная, запись пойдет в ветку
HKLM\Software\Wow6432Node\Microsoft\...


Добавлено через 3 минуты
Все, проблема решена. Если система 64 битная то смотреть нужно в Software\Wow6432Node

Добавлено через 35 секунд
Всем спасибо

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

Теперь в ОС 64 битной и в XР проблем нету, все отлично работает, но если винда 32 (8 или 7) то отказывается залазить в реестр:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
bool x;
switch (TOSVersion::Architecture) {
case TOSVersion::arIntelX86:
  x = false;
  break;
case TOSVersion::arIntelX64:
  x = true;
  break;
}
 
TRegistry *Reg = new TRegistry();
Reg->RootKey = HKEY_LOCAL_MACHINE;
if (x) {Reg->OpenKey("SOFTWARE\\Wow6432Node\\ASW",false);} // если 64 то сюда
else {Reg->OpenKey("SOFTWARE\\ASW",false);}   // если 32 то сюда
ShowMessage(Reg->CurrentPath);
if (Reg->ValueExists("id_par"))
   {
   id = StrToInt(Reg->ReadString("id_par"));
   ShowMessage (id);
   }
else
   {
    ShowMessage ("Нету");
   }
Так вот при запуске в 32-х битной среде ShowMessage(Reg->CurrentPath) выдает пустое место! Как будто вообще не заходит в реестр.
И естественно идет по ветке else...

Добавлено через 6 минут
Ложная тревога ) Проблема оказалась с правами админа
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.02.2017, 21:16
Помогаю со студенческими работами здесь

Сценарий, обеспечивающий чтение из реестра содержимого любого раздела, параметра и значения параметра
Помогите написать сценарий, обеспечивающий чтение из реестра содержимого любого раздела, параметра и значения параметра. Заранее...

О вшитом лицензионном ключе ключе Windows и потере дисков восстановления
Добрый день, знатоки. Перелазил весь форум, не нашел решения моей проблемы. Имеется ноутбук Asus N76vb (с двумя физическими жесткими...

Условие всегда false
Проблема в том, что у меня есть сайт на пхп и база. Регистрация студента в signup.php происходит без проблем, а регистрация коменданта в...

Условие всегда возвращает false
ребят подскажите почему всегда условие выдает, что пароль неверный? ввел 3 номера с паролем (если заходить с номеров в icq то все...

Функция create_directories всегда возвращает false
Есть несколько папок, в которых формируются много файлов, необходимо переносить их на флешку. Написал функцию, создающую папки на флешке и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru