0x00782030 ist höchstens ein Zeiger auf einen Speicherbereich,
in dem eine String-Repräsentation vom entsprechenden Wert
liegt.
wenn ich jedoch ein DWORD auslese welches einen Wert von
0x00000001(1) hatt kommt folgendes raus:
http://deadmasters.home.t-link.de/c-2.jpg
Und das ist dann wohl auch ein Zeiger.
Was passiert denn, wenn du
*(DWORD*)(values[valuesa]);
zum Auslesen benutzt?
Es würde vielleicht helfen, ein wenig Code zu sehen und die
Typen der verschiedenen Variablen zu kennen.
also das mit dem DWORd direkt auslesen hatte ich auchschon probiert, aber das Problem is das die „Registrywerteauslesefunktion“ zwingend eine „unsigned char *“ Variable braucht 
naja hier mal Variablen:
DWORD dwsize;
CString value;
unsigned int *value2;
double value3;
HKEY openkeys[26];
short int openkeysa;
char *getvalues[46];
short int getvaluesa;
unsigned char *values[46];
short int valuesa;
(value2 is z.z. nur zum Testen)
und hier die auslese Funktion:
do
{
if (RegQueryValueEx(openkeys[openkeysa],getvalues[getvaluesa],NULL,NULL,NULL, &dwsize) == ERROR_SUCCESS)
; //MessageBox(„Stufe 1 erfolgreich“);
else
{
MessageBox(getvalues[getvaluesa],„Wert nicht gefunden/lesbar:“,MB_ICONWARNING);
break;
}
values[valuesa] = (unsigned char *)malloc(dwsize);
if (RegQueryValueEx(openkeys[openkeysa],getvalues[getvaluesa],NULL,NULL,values[valuesa], &dwsize) == ERROR_SUCCESS)
; //MessageBox(„Stufe 2 erfolgreich“);
else
{
MessageBox(getvalues[getvaluesa],„Wert nicht auslesbar:“,MB_ICONWARNING);
break;
}
kurze erklärung: die erste Funktion liest blos die größe des wertes aus und rechnet dann mit der Malloc Funktion die benötigte Puffergröße (von pBuffer) aus. Die 3. Funktion liest schlieslich den Wert aus und speicher ihn in die Variable „pBuffer“.
(Ka ab dieses Pufferausrechnen nen großen vorteil bringt, aber es wurde innem buch empfohlen
)
btw: warum ich nicht gleich das Array statt der pBuffer Variable genommen habe weis ich auch nicht… 
habs jetzt geändert…