Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2018, 12:49   #1
Михаил1990
Пользователь
 
Регистрация: 17.05.2018
Сообщений: 29
Восклицание Работа с реестром

Добрый день форумчане.
Столкнулся с такой проблемой:
При попытке вывести значение ключа Install не выводит вообще ни чего...
Код:
TCHAR lpData[1024]={0};
DWORD buffersize = sizeof(lpData);
HKEY hKey;
//

if (RegOpenKeyEx (HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Client\\1034"),NULL,KEY_READ,&hKey)==ERROR_SUCCESS)
{

		if (RegQueryValueEx(hKey,TEXT("Install"),NULL,NULL,(LPBYTE) lpData,&buffersize)==ERROR_SUCCESS)
		{
			 std::wcout << lpData;
		}
		std::wcout << lpData;
}

RegCloseKey (hKey);
Но код этот почему то только работает если
Код:
if (RegOpenKeyEx (HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Internet Explorer\\Main"),NULL,KEY_READ,&hKey)==ERROR_SUCCESS)
{

		if (RegQueryValueEx(hKey,TEXT("Local Page"),NULL,NULL,(LPBYTE) lpData,&buffersize)==ERROR_SUCCESS)
С другими путями напроч выдаёт пустоту...
Михаил1990 вне форума Ответить с цитированием
Старый 17.05.2018, 13:40   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Цитата:
Сообщение от Михаил1990 Посмотреть сообщение
При попытке вывести значение ключа Install не выводит вообще ни чего...
1. Этот ключ не в юзерах, а в машине.
2. Вы уверены, что вам нужен испанский язык?
p51x вне форума Ответить с цитированием
Старый 17.05.2018, 13:46   #3
Михаил1990
Пользователь
 
Регистрация: 17.05.2018
Сообщений: 29
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
1. Этот ключ не в юзерах, а в машине.
2. Вы уверены, что вам нужен испанский язык?

Да,теперь работает, спасибо!
Всмысле испанский?
Михаил1990 вне форума Ответить с цитированием
Старый 17.05.2018, 14:03   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

1034 - Spain - SUBLANG_SPANISH
p51x вне форума Ответить с цитированием
Старый 17.05.2018, 14:25   #5
Михаил1990
Пользователь
 
Регистрация: 17.05.2018
Сообщений: 29
По умолчанию

Не могли бы ещё подсказать При проведении проверки
if(lpData== "4.0.0") ошибка tchar* в char не возможно
Если преобразовать в char что то потеряю,
Как сделать такую проверку что бы создать tchar Chck= ""и по ней проверять?
Михаил1990 вне форума Ответить с цитированием
Старый 17.05.2018, 14:32   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Используйте _tcscmp. Хотя лучше если олностью перейти на юникод.
p51x вне форума Ответить с цитированием
Старый 17.05.2018, 14:48   #7
Михаил1990
Пользователь
 
Регистрация: 17.05.2018
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Михаил1990 Посмотреть сообщение
ошибка tchar* в char не возможно
На юникоде вроде, _tcscmp не знаком..
Думаю в файл записать это значение, затем сравнить..
Но fout записывает адрес...

Последний раз редактировалось Михаил1990; 17.05.2018 в 14:57.
Михаил1990 вне форума Ответить с цитированием
Старый 17.05.2018, 14:59   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Если на юникоде, то забивайте на всякие tchar и используйте юникод версии напрямую RegOpenKeyExW и т.д.

Цитата:
Сообщение от Михаил1990 Посмотреть сообщение
_tcscmp не знаком
Тотже strcmp макросом раскрывается.
p51x вне форума Ответить с цитированием
Старый 17.05.2018, 15:11   #9
Михаил1990
Пользователь
 
Регистрация: 17.05.2018
Сообщений: 29
По умолчанию

Использую RegOpenKeyExW, теперь в консоли не 4.0.0 а 4 просто,
Вывел в файл - один символ 4
Делаю проверку через if не срабатывает...
Код:
char lpData[1024]={0};
DWORD buffersize = sizeof(lpData);
HKEY hKey;

if (RegOpenKeyExW  (HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\NET Framework Setup\\NDP\\v4\\Client"),NULL,KEY_READ,&hKey)==ERROR_SUCCESS)
{

		if (RegQueryValueEx(hKey,TEXT("TargetVersion"),NULL,NULL,(LPBYTE) lpData,&buffersize)==ERROR_SUCCESS)
		{
			 std::wcout << lpData;
		}
		//std::wcout << lpData;
}

if(lpData == "4")
{
	MessageBox(NULL,L"FIND!",L"Info",MB_OK|MB_ICONINFORMATION);
}
std::ofstream out;          
    out.open("search.txt"); 
    if (out.is_open())
    {
        out << lpData<< std::endl; //1 символ это '4'
    }
	out.close();
Михаил1990 вне форума Ответить с цитированием
Старый 17.05.2018, 15:21   #10
Михаил1990
Пользователь
 
Регистрация: 17.05.2018
Сообщений: 29
По умолчанию

Даже сравниванием не удается
Код:
  string a ("4"),b (lpData);
    
	int f = strcmp(a.c_str(),b.c_str());
	if(f=0)
	{
		MessageBox(NULL,L"FIND!",L"Info",MB_OK|MB_ICONINFORMATION);

	}
Михаил1990 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с реестром ZiDoxFix C# (си шарп) 4 10.05.2015 10:12
Работа с реестром на с++ TTr5 Visual C++ 2 01.05.2015 11:05
работа с реестром world12_tk Помощь студентам 0 04.10.2011 23:39
Работа с реестром Ky3Heu, Общие вопросы Delphi 1 04.05.2009 10:37
работа с реестром. kozei Win Api 6 17.07.2007 13:31