C++ Eintrag in der Registry ändern

Zonk!

Ensign
Registriert
Aug. 2007
Beiträge
228
Hallo,

ich versuche gerade ein kleines Programm zu schreiben welches in der Registry den Eintrag für EnableProxy auf 1 oder 0 setzt, leider funktioniert mein Programm nicht (allerdings bekomme ich keine sinvollen Fehler beim compilieren).

PHP:
#include <iostream>
#include <windows.h>
using namespace std;

int main () {
	   HKEY hkey;

	    DWORD dwNum = 0;
	    DWORD dwData = sizeof(DWORD);

	    RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",0,KEY_QUERY_VALUE,&hkey);

	        RegQueryValueEx(hkey,"ProxyEnable",0,NULL,(BYTE*)&dwNum,&dwData);
	        RegCloseKey(hkey);
	if(dwNum==1)
	    {

	       dwNum=0;
	       RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hkey,0);
	       RegSetValueEx(hkey,"ProxyEnable",0,REG_DWORD,(BYTE*)&dwNum,sizeof(DWORD));
	       RegCloseKey(hkey);
	    }else{
	
	    	dwNum=1;
	    	RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hkey,0);
	    	RegSetValueEx(hkey,"ProxyEnable",0,REG_DWORD,(BYTE*)&dwNum,sizeof(DWORD));
	    	RegCloseKey(hkey);
	    }
	    cout << "Ausgabe: " << endl;
	    cout << dwNum<< endl;
	    return 0;
}

Gruß Zonk!
 
Zuletzt bearbeitet:
Sollen wir für dich jetzt alles nachprüfen? Sieh dir doch mal die ganzen Rückgabewerte an!
 
habe es jetzt mit einem anderen Compiler versucht, und siehe da es geht.


Gruß Zonk!
 
Also daß das jetzt bloß am Compiler lag, kann ich mir nur sehr schwer vorstellen. Hast du wenigstens den Rat von Yuuri befolgt? Die meisten Funktionen, die die Windows-API zur Verfügung stellt, haben Rückgabewerte. Und das tun sie nicht aus Jux und Dallerei sondern weil sie fehlschlagen können. Du solltest auf solche Fehler reagieren und nicht einfach lustig weiter durchmarschieren, als wäre alles in Butter.

Dein Programm mag jetzt vielleicht funktionieren, aber in deinem eigenen Interesse solltest du rausfinden, warum es das mit dem anderen Compiler nicht tut, denn höchstwahrscheinlich ist das nicht der wirkliche Grund.
 
Kanns sein dass du auf einen 64-bit compiler umgestiegen bist? Ich weiss leider nicht auswendig wie die Registry Virtualisierung bei WoW64 genau funktioniert, aber es kann sein, dass du mit nem 32-bit Programm in die "falsche" Registry schreibst auf nem 64-bit Windows.
 
Zurück
Oben