Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Узнать существует ли запись в реестре |

02.06.2007, 22:54
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме: 2982851
Репутация:
107
|
|
Узнать существует ли запись в реестре
Проблема моя сотоит в том что вот этот код не работает
Код:
#include <windows.h>
#include <stdio.h>
#include <conio.h>
main()
{
HKEY hKey;char szProductType[32]; DWORD dwBufLen=32;
RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_EXECUTE,&hKey);
if(RegQueryValueEx(hKey,"test",NULL,NULL,szProductType,&dwBufLen) != ERROR_SUCCESS)
{
printf("no k \n");
getch();
}
}
RegQueryValueEx даже если есть запись с нужным именем невозращает ERROR_SUCCESS.Где я мог допустить ляп?
|
|
|

02.06.2007, 23:06
|
|
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме: 1941233
Репутация:
2726
|
|
LONG RegQueryValueEx(
HKEY hKey, // handle of key to query
LPTSTR lpValueName, // address of name of value to query
LPDWORD lpReserved, // reserved
LPDWORD lpType, // address of buffer for value type
LPBYTE lpData, // address of data buffer
LPDWORD lpcbData // address of data buffer size
);
у тебя LPDWORD lpType нулю равен
|
|
|

03.06.2007, 00:57
|
|
Участник форума
Регистрация: 11.07.2006
Сообщений: 125
Провел на форуме: 413927
Репутация:
71
|
|
а ты проверь прежде указатель на ключ получен или нет
замени Key_execute на Key_all_access
|
|
|

03.06.2007, 02:02
|
|
Участник форума
Регистрация: 14.03.2005
Сообщений: 267
Провел на форуме: 2827464
Репутация:
545
|
|
и указывай Reg_sz как тип данных если читается строка
|
|
|

03.06.2007, 13:49
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
В Msdn примеры были вроде же. И там есть описание каждого параметра
|
|
|

03.06.2007, 13:52
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме: 2982851
Репутация:
107
|
|
Переписал вот так
Код:
#include <windows.h>
#include <stdio.h>
#include <conio.h>
main()
{
HKEY hKey;char szProductType[32]; DWORD dwBufLen=32;char ktp[]="REG_SZ";
RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_ALL_ACCESS,&hKey);
if(RegQueryValueEx(hKey,"mt",NULL,(LPDWORD)ktp,szProductType,&dwBufLen) != ERROR_SUCCESS)
{
printf("no k \n");
getch();
}
}
Непомогло.Может кто нибудь даст ссылку на рабочий пример?
|
|
|

03.06.2007, 14:48
|
|
Banned
Регистрация: 13.12.2005
Сообщений: 1,091
Провел на форуме: 9751364
Репутация:
1847
|
|
Код:
RegQueryValueEx(hKey,"mt",NULL,(LPDWORD)ktp,(LPBYTE)szProductType,&dwBufLen)
|
|
|

03.06.2007, 15:07
|
|
Участник форума
Регистрация: 09.12.2006
Сообщений: 135
Провел на форуме: 426226
Репутация:
726
|
|
У меня работает
Код:
HKEY Key;
char szProductType[132];
DWORD dwBufLen=132;
DWORD ktp =REG_SZ; // так работает
RegOpenKeyExA(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_ALL_ACCESS,&Key);
if(RegQueryValueExA(Key,"kav",NULL,&ktp,(LPBYTE)szProductType,&dwBufLen) != ERROR_SUCCESS)
{printf("no k \n");} else {printf(szProductType);}
getch();
return 0;
|
|
|

03.06.2007, 15:18
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
о, да! =\
DWORD dwValueType = REG_SZ;
RegQueryValueExA( ... &dwValueType... )
|
|
|

03.06.2007, 15:39
|
|
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме: 1941233
Репутация:
2726
|
|
char ktp[]="REG_SZ";
я, б*я, говорил что надо указать константу REG_SZ а не указатель на строку "REG_SZ"
эх вы молодежь, все это от нечитания msdn.
Последний раз редактировалось begin end; 05.06.2007 в 18:30..
Причина: *
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|