Problem mit der Registry

Hallo,

sehr interesantes Thema. Jetzt hab ich noch ein Problem. Wie kann man DWORD's auslesen. Ich hab zum Beispeil den Dezimal Wert 15 den ich so als Ganzzahl auslesen möchte. Wenn ich das DWORD, mit deinem Programm, auslese und die Variable mit cout ausgib - zeigt er mit nur ¤ an. Ich denke das hängt mit dem ASCII Code zusammen. Wenn ich mit regedit den Dezimalwert auf 65 änder, zeigt er mir A an - was vom ASCII Code her stimmt.

Es gibt doch bestimmt einen Befehl, der von einem Zeichen die ASCII Dezimalzahl ausspuckt.
 
Das habe ich versucht. Ich habe das Programm um folgende Befehle erweitert:

Code:
int wert = szString;

if (wert == 65)
{
	cout << "geht" << endl;
}
else
{
	cout << "geht nicht" << endl;
}
dann bekomme ich vom Visual C++ Kompiler folgende Fehlermeldung:

error C2440: 'initializing' : 'char [300]' kann nicht in 'int' konvertiert werden. Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
 
moin


Das liegt daran das szString aus 300 Zeichen besteht, wert aber nur ein Zeichen aufnehmen kann, also musst du angeben welches Zeichen aus szString genau nach Wert übergeben werden soll.
Richtig wäre z.B.:
Code:
int wert = szString[0];


mfg
umbrasaxum
 
Ist es eigendlich auch möglich einen string in der Registrierung zu suchen?

d.h. man sucht nach einem string und als rückgabewert erhält man den schlüssel
 
Zuletzt bearbeitet:
partitionist hat gesagt.:
Also dieser Code funktioniert:

Code:
  #include <iostream>
  #include <windows.h>
  #include <string>
  
  
  using namespace std;
  
  int main()
  {
  	string passwd = "Haus";
  
  	HKEY hkey;
  	HKEY KEY = HKEY_CURRENT_USER;
  
  	char place[100]= {"Software\\TEST"};
  	char name[100]= {"Passwort"};
  		
  
  	RegCreateKey(KEY, place, &hkey); 
  	RegOpenKeyEx(KEY,(LPCTSTR)place,0, KEY_ALL_ACCESS,&hkey); 
  	RegSetValueEx(hkey, name, 0, REG_SZ, (unsigned char *)passwd.c_str(), passwd.length());
  	RegCloseKey(hkey);
  
  return 0;
  }

auf welchen Compiler ist dieses Beispiel ausgelegt, wenn ich das mit meinem VC Compiler versuche funktioniert das nicht.
1. dort gibt es keinen string
2. die umwandlung bei RegSetValueEx funktioniert gar nicht

wär super wenn mir hierbei jemand helfen könnte!!
 
Das ist Visual C-Code, der lässt sich einwandfrei kompilieren und funktioniert auch. Was für ein VC hast du, dass der std::string nicht bekannt ist VC 5?

Hast du evtl. das using namespace std vergessen?
 
Zuletzt bearbeitet:
ich hab VC 6 hab jetzt irgendwas mit nem BYTE datentyp gefunden ich hab zwar keine ahnung was der macht oder was er kann aber jetzt tuts zumindest mal bis auf das auslesen:

DWORD dwData = 256;
BYTE cDaten[256]=" ";
RegOpenKeyEx(KEY,(LPCTSTR)place,0, KEY_ALL_ACCESS,&hkey);
RegQueryValueEx(hkey,name,0,0,cDaten,&dwData);;
RegCloseKey(hkey);


sieht irgendjemand den fehler? er soll einfach den Wert "hallo" auslesen und in cDaten speichern tut er aber bedauernswerter weise nicht
 

Neue Beiträge

Zurück