Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Узнать существует ли запись в реестре (https://forum.antichat.xyz/showthread.php?t=41435)

_nic 02.06.2007 22:54

Узнать существует ли запись в реестре
 
Проблема моя сотоит в том что вот этот код не работает
Код:

#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.Где я мог допустить ляп?

KEZ 02.06.2007 23:06

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 нулю равен

da_ff 03.06.2007 00:57

а ты проверь прежде указатель на ключ получен или нет
замени Key_execute на Key_all_access

inSa(Ne)rd 03.06.2007 02:02

и указывай Reg_sz как тип данных если читается строка

_Great_ 03.06.2007 13:49

В Msdn примеры были вроде же. И там есть описание каждого параметра

_nic 03.06.2007 13:52

Переписал вот так
Код:

#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();
}
}

Непомогло.Может кто нибудь даст ссылку на рабочий пример?

tclover 03.06.2007 14:48

Код:

RegQueryValueEx(hKey,"mt",NULL,(LPDWORD)ktp,(LPBYTE)szProductType,&dwBufLen)

Xserg 03.06.2007 15:07

У меня работает
Код:

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;


_Great_ 03.06.2007 15:18

Цитата:

,(LPDWORD)ktp
о, да! =\

DWORD dwValueType = REG_SZ;
RegQueryValueExA( ... &dwValueType... )

KEZ 03.06.2007 15:39

char ktp[]="REG_SZ";

я, б*я, говорил что надо указать константу REG_SZ а не указатель на строку "REG_SZ"
эх вы молодежь, все это от нечитания msdn.


Время: 22:27