Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
2 / 2 / 0
Регистрация: 19.04.2014
Сообщений: 36

Не считывает параметр с реестра

05.05.2014, 16:17. Показов 1371. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Есть код:
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
25
26
27
28
29
30
31
32
33
34
35
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <winbase.h>
#include "Registry.hpp"
 
 
#include "Unit1.h"
#include <Iptypes.h>
#include <assert.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
 
 
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 TRegistry *reg=new TRegistry();
reg->RootKey=HKEY_LOCAL_MACHINE;
reg->OpenKeyReadOnly("SOFTWARE\\Microsoft\\Cryptography");
AnsiString WinID;
WinID=reg->ReadString("MachineGuid");
reg->CloseKey();
delete reg;
Edit1->Text = WinID;
}
Этот код почему-то не работает. Хотя точно такой-же код работает нормально :
C++
1
2
3
4
5
6
7
8
TRegistry *reg=new TRegistry(); 
reg->RootKey=HKEY_LOCAL_MACHINE;  
reg->OpenKeyReadOnly("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
AnsiString WindowsVersion;
WindowsVersion=reg->ReadString("ProductName");
reg->CloseKey();
delete reg;
Edit1->Text = WindowsVersion;
Подскажите,в чём проблема.
Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.05.2014, 16:17
Ответы с готовыми решениями:

Не считывает ключ реестра в Windows XP (не запускается программа)
Имеется следующий метод: public static string ReadRegistry(string registryPath, string key) { RegistryKey readKey...

Запрос к серверу не считывает параметр из формы
:) Доброго время суток! Пожалуйста, подскажите как создать запрос к серверу (из Access) c переменной, которая считывается с формы ...

Изменить параметр ветки реестра
вот ветка HKEY_LOCAL_MACHINE\SOFTWARE\Microso ft\Windows NT\CurrentVersion\Winlogon параметр SHELL его значение равно Explorer.exe ...

3
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
05.05.2014, 16:37
Потому что если windows 64-разрядный, то результат вы получаете из ветки wow64, в которой этого значения может и не существовать.
В качестве пруфа поищите в HKLM\\Software каталог Wow6432Node, внутри уже \microsoft\... что там вам надо и посмотрите есть ли такой ключ. Если нет, создайте ручками и посмотрите результат =)
1
2 / 2 / 0
Регистрация: 19.04.2014
Сообщений: 36
05.05.2014, 18:06  [ТС]
Цитата Сообщение от mimicria Посмотреть сообщение
Потому что если windows 64-разрядный, то результат вы получаете из ветки wow64, в которой этого значения может и не существовать.
В качестве пруфа поищите в HKLM\\Software каталог Wow6432Node, внутри уже \microsoft\... что там вам надо и посмотрите есть ли такой ключ. Если нет, создайте ручками и посмотрите результат =)
Спасибо большое. Буду разбираться.
0
 Аватар для lanu4
15 / 15 / 5
Регистрация: 21.08.2012
Сообщений: 115
Записей в блоге: 2
06.05.2014, 04:15
можно еще так сделать:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
HKEY Key,SubKey;
        long  ErrorCode;
        DWORD KeyCount = 0;
        CHAR Value[MAX_PATH];
        TCHAR buf[MAX_PATH];
        DWORD bufSize = MAX_PATH;
        DWORD keyType = REG_SZ;
        String StartHere = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
 
        if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, StartHere.w_str(), NULL, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &Key) == ERROR_SUCCESS)
        {
            do
            {
                ErrorCode = RegEnumKey(Key, KeyCount, (LPTSTR)Value, MAX_PATH);
                if(ErrorCode == ERROR_SUCCESS)
                {
 
                    if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, (StartHere + "\\" + (LPTSTR)Value).w_str(), NULL, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &SubKey) == ERROR_SUCCESS)
                    {
                        if (String((LPTSTR)Value).Pos("{") == 1)
                        {
                            lstrcat(buf,L"");
                            RegQueryValueEx(SubKey, L"DisplayName", NULL, &keyType, NULL, &bufSize);
                            if (RegQueryValueEx(SubKey, L"DisplayName", NULL, &keyType, (LPBYTE)buf, &bufSize) == ERROR_SUCCESS)
                            {
                                if(String(buf) != "" && String(buf).Pos("kb") != 1)
                                {
                                    DisplayNameList->Add(buf);
 
                                    KeyList->Add((LPTSTR)Value);
                                }
                            }
                            RegCloseKey(SubKey);
                        }
                    }
 
                }
 
                KeyCount++;
            }
            while(ErrorCode != ERROR_NO_MORE_ITEMS);
            RegCloseKey(Key);
 
        }
DisplayNameList и KeyList - TStringList.
Свою ветку реестра подставьте. должно получится
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.05.2014, 04:15
Помогаю со студенческими работами здесь

Не могу удалить параметр из реестра
using (RegistryKey key1 =...

Считать с реестра пары параметр-значение
Есть определенный путь например HKEY_CLASSES_ROOT\Installer\Products, как считать все пары параметр-значение со всех ключей которые...

Как удалить из реестра строковый параметр ?
К примеру как из реестра удалить то что я написал ниже ! ...

Как удалить из реестра строковый параметр
Здравствуйте Ув. Пользователи и профессионалы. Появился вопрос, а как удалить из реестра строковый параметр? Находится:...

За что отвечвет параметр реестра AppInit_DLLs
А что это за параметр такой можно поинтересоваться?


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru