Название: Посоветуйте как читать названия папок в реестре
Отправлено: 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(); }
Название: Re: Посоветуйте как читать названия папок в реестре
Отправлено: Пантер от Февраль 25, 2011, 09:59
Кури QSettings.
Название: Re: Посоветуйте как читать названия папок в реестре
Отправлено: garryHotDog от Февраль 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); //--------------------------------------------------------
Название: Re: Посоветуйте как читать названия папок в реестре
Отправлено: Vega от Февраль 28, 2011, 08:46
QSettings ключи читает, но вот названия разделов никак не получается, может кто сталкивался с такой проблемой?
Название: Re: Посоветуйте как читать названия папок в реестре
Отправлено: kuzulis от Февраль 28, 2011, 09:17
Вот как вариант, еще: http://www.prog.org.ru/topic_12943_0.html
Название: Re: Посоветуйте как читать названия папок в реестре
Отправлено: Vega от Февраль 28, 2011, 10:01
так же папки не читает...(
Название: Re: Посоветуйте как читать названия папок в реестре
Отправлено: Пантер от Февраль 28, 2011, 10:03
QStringList QSettings::childGroups () const
|