C++ Eintrag in der Registry ändern

Zonk!

Ensign
Dabei seit
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:

Yuuri

Fleet Admiral
Dabei seit
Okt. 2010
Beiträge
13.795
Sollen wir für dich jetzt alles nachprüfen? Sieh dir doch mal die ganzen Rückgabewerte an!
 

Zonk!

Ensign
Ersteller dieses Themas
Dabei seit
Aug. 2007
Beiträge
228
habe es jetzt mit einem anderen Compiler versucht, und siehe da es geht.


Gruß Zonk!
 

antred

Lt. Commander
Dabei seit
Juni 2010
Beiträge
1.288
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.
 

IceMatrix

Lt. Commander
Dabei seit
Jan. 2008
Beiträge
1.535
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.
 
Top