Пытаюсь вывести значения параметра реестра типа DWORD... В реестре это выглядит так 0х00000001 (1) или 0х00000000 (0)... Но когда выводит буффер на экране либо пусто либо хрень какая-то... Код (Text): char c[256]; RegQueryValueEx(hkey,name,NULL,&dwType,(byte *)&c, &dwSize); printf("key value:%s\n", c); Скажите как правильно вывести и проанализировать значение такого параметра?
C %h - hex дворд - выводит пустую строку (key value: и всё), со значением в реестре как с 0х00000001 (1) так и с 0х00000000 (0), а %d - дворд - выводит значение 1244552, со значением в реестре как с 0х00000001 (1) так и с 0х00000000 (0) То есть как бы не прослеживается особое изменение =) Так как же быть?
В общем ты должен проверять тип значения REG_DWORD и тп И в зависимости от типа делать принтф например есть значение 2 а реестре Код (Text): char c[255] = "1234"; DWORD BufferSize = 255; HKEY hKey ; LONG lRet; lRet = RegQueryValueEx(hKey, TEXT("test"), NULL,NULL,(LPBYTE)&c,&BufferSize); if( lRet != ERROR_SUCCESS) return FALSE; printf("key value %d\n",c[0]); Выдаст цифру 2. Это говорит о том что копируется не строка а явно значение параметра.
Вот код он прост до безобразия!!! Код (Text): BOOL CheckDataRegistry() { HKEY hkey; const char path[]="SYSTEM\\CurrentControlSet\\Control\\PnP\0"; const char name[]="DisableFirmwareMapper\0"; DWORD dwSize=sizeof(DWORD); DWORD dwType=REG_DWORD; long result; char c[256]; result = RegOpenKeyEx (HKEY_LOCAL_MACHINE, path, 0, KEY_ALL_ACCESS|KEY_READ|KEY_WRITE, &hkey); if (result! = ERROR_SUCCESS) { printf ("failed to open key \n"); return -1; } result = RegQueryValueEx (hkey, name, NULL, &dwType, (byte *)&c, &dwSize); if (result != ERROR_SUCCESS) { printf ("failed to query key value \n"); return -1; } printf ("key value: %d\n", c); //КОСЯК!!! result = RegCloseKey (hkey); if (result != ERROR_SUCCESS) { printf ("failed to close key \n"); return -1; } return 0; }
sxd Чувствуешь разницу? Код (Text): printf("key value %d\n",c[0]); и printf ("key value: %d\n", c); //КОСЯК!!!
Да спасибо TermoSINteZ... Я вчера тоже допёр, что нужно только c[0]... Хм смешно, такая мелочь... Спасибо всем!
TermoSINteZ А у меня когда значение переваливает на второй байт начинает ерунду выдовать... как правельние сделать?