Russian Qt Forum
Сентябрь 28, 2024, 22:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Посоветуйте как читать названия папок в реестре  (Прочитано 3354 раз)
Vega
Гость
« : Февраль 25, 2011, 08:56 »

В QT не особо разбираюсь, но срочно нужну реализовать такой код который будет читать имена папок и вложенных в них имена папок, по этому пути HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Enum\\USBSTOR

пробую переделать этот код, но пока результат нулевой...((

Код:
#include <QtCore>
#include <windows.h>
int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);

LONG retVal=0;
DWORD Index=0;
DWORD dwTypeCode;
char KeyParam[256];
char KeyValue[256];
DWORD dwKeyParamLength = sizeof(KeyParam);
DWORD dwKeyValueLength = sizeof(KeyValue);
LONG lnResult;
HKEY hKey;
retVal=RegOpenKeyExA(HKEY_LOCAL_MACHINE,"Hardware\\Devicemap\\Serialcomm", 0, KEY_READ, &hKey);
qDebug() << "RegOpenKeyExA =" << retVal;
while (RegEnumValueA(hKey, Index, KeyParam, &dwKeyParamLength, NULL,
&dwTypeCode, (BYTE *)KeyValue, &dwKeyValueLength) == ERROR_SUCCESS) {
if(dwTypeCode == REG_SZ) {
qDebug() << "Index=" << Index;
qDebug() << "KeyParam=" << KeyParam;
qDebug() << "dwKeyParamLength=" << dwKeyParamLength;
qDebug() << "dwTypeCode=" << dwTypeCode;
qDebug() << "KeyValue=" << KeyValue;
qDebug() << "dwKeyValueLength=" << dwKeyValueLength;
        }
        ++Index;
        dwKeyParamLength = sizeof(KeyParam);
        dwKeyValueLength = sizeof(KeyValue);
}
retVal=RegCloseKey(hKey);
qDebug() << "RegCloseKey=" << retVal;

    return app.exec();
}
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Февраль 25, 2011, 09:59 »

Кури QSettings.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
garryHotDog
Гость
« Ответ #2 : Февраль 26, 2011, 20:53 »

Присоединяюсь к предыдущему посту....если не прокатит вот пример без использования QT...описанные ниже ф-ии читают значение ComputerName в SYSTEM\\ControlSet001\\Control\\ComputerName\\ComputerName :
Код
C++ (Qt)
BOOL GetComputerName_G1(LPTSTR lpBuffer,ULONG* lpnSize)
{
BOOL result = FALSE;
 
if( lpBuffer && lpnSize )
{
char kname[MAX_PATH]= "SYSTEM\\ControlSet001\\Control\\ComputerName\\ComputerName";
 
char cComputerName[MAX_PATH]="ComputerName";
 
CRegKey regKey;
 
if( regKey.Open(HKEY_LOCAL_MACHINE,kname) == ERROR_SUCCESS )
{
result = (regKey.QueryStringValue(cComputerName,lpBuffer,lpnSize) == ERROR_SUCCESS) ;
regKey.Close();
}
}
return(result);
}
 
//--------------------------------------------------------
using:
char cn[MAX_PATH]={'\0'};
ULONG sz = MAX_PATH;
 
BOOL b1 = GetComputerName_G1(cn,&sz);
//--------------------------------------------------------
BOOL GetComputerName_G2(LPTSTR lpBuffer,DWORD* lpnSize)
{
BOOL result = FALSE;
 
if( lpBuffer && lpnSize )
{
char kname[MAX_PATH]= "SYSTEM\\ControlSet001\\Control\\ComputerName\\ComputerName";
 
char cComputerName[MAX_PATH]="ComputerName";
 
HKEY hKey;
 
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, kname, 0, KEY_READ, &hKey) == ERROR_SUCCESS)
{
result = (RegQueryValueEx( hKey, cComputerName, NULL, NULL, (LPBYTE)lpBuffer, lpnSize) == ERROR_SUCCESS)
 
RegCloseKey(hKey);
}
}
 
 
return(result);
}
//--------------------------------------------------------
using:
char cn[MAX_PATH]={'\0'};
DWORD sz = MAX_PATH;
BOOL b2 = GetComputerName_G2(cn,&sz);
//--------------------------------------------------------
 
Записан
Vega
Гость
« Ответ #3 : Февраль 28, 2011, 08:46 »

QSettings ключи читает, но  вот названия разделов никак не получается, может кто сталкивался с такой проблемой?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #4 : Февраль 28, 2011, 09:17 »

Вот как вариант, еще: http://www.prog.org.ru/topic_12943_0.html
« Последнее редактирование: Февраль 28, 2011, 09:21 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Vega
Гость
« Ответ #5 : Февраль 28, 2011, 10:01 »

так же папки не читает...(
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Февраль 28, 2011, 10:03 »

QStringList QSettings::childGroups () const
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.098 секунд. Запросов: 23.