ERLEDIGT
JA
JA
ANTWORTEN
19
19
ZUGRIFFE
535
535
EMPFEHLEN
-
01.07.08 11:30 #1
Hallo
Ich benutze den Dev C++ Compiler und würde gerne einen Registry Eintrag machen wenn die exe gestartet wurde.
Unter HKEY_LOCAL_MACHINE\Software soll ein Ordern TEST1 mit Unterordner TEST2 erstellt werden. In Test2 ein KEY mit dem Namen TESTKEY und einen Wert als Pfad.
Wie mache ich so etwas?
Liebe Grüße
Sunflower84
-
Die Links sollten vielleicht erstmal helfen:
http://www.ecodes.de/cbuilder/ansicht.php?ind=47
http://op.htmsoft.com/articles/Articlea2-5-3.html
http://www.wer-weiss-was.de/theme158...le1465329.html
Viel Spaß!
XeoXWenn du jemandem auf die Brille trittst, erinnere ihn: Man sieht nur mit dem Herzen gut.
(Antoine de Saint-Exupéry)
-
01.07.08 11:52 #3
Danke, werde ich mir mal anschauen.
Hab da mal folgendes versucht:
HKEY hKey;
RegCreateKeyEx(HKEY_CURRENT_USER,"Test",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,0);
Funktioniert auch. Ordner "Test" wurde angelegt. Aber solbald ich HKEY_CURRENT_USER in HKEY_LOCAL_MACHINE änder geht es nicht.
Kann mir jemand sagen warum?
-
01.07.08 11:59 #4
Mit "Software" vor Test klappt es
-
01.07.08 13:06 #5
Hab das mal so gemacht:
RegCreateKeyEx(HKEY_LOCAL_MACHINE,"Software\\Test1\\Test2",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCES S,NULL,&hKey,0);
const unsigned char valueData[] = "C:\\";
RegSetValueEx(hKey,"TESTKEY",0,REG_SZ,valueData,sizeof(valueData));
Funktioniert auch super. Aber hab noch ein Problem. Der value der momentan "C:\\" heißt, soll der Pfad sein, wo sich die exe gerade befindet die aufgerufen wurde.Wie gebe ich das an?
Liebe Grüße
Sunflower84
-
Die API-Funktion "GetModuleFileName()" liefert dir den vollständigen Pfad deiner EXE.
Ähnliche Themen wurden im Forum schon behandelt, also einfach mal suchen.
Gruß
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
01.07.08 13:36 #7
Das habe ich auch schon gemacht und zwar so:
char str[MAX_PATH];
GetModuleFileName(NULL,str,MAX_PATH);
Wenn ich aber jetzt MAX_PATH valueData[] zuweise, dann bekomme ich einen Fehler.
Liebe Grüße
Sunflower84
-
01.07.08 14:34 #8
Also ich habe nichts gefunden.
Nur das es mit GetModuleFileName geht. Aber wie weise ich der Variablen valueData[] den Wert zu?
-
Nimm doch gleich "str":
GrußCode cpp:1 2 3 4 5 6
RegSetValueEx( hKey, "TESTKEY", 0, REG_SZ, reinterpret_cast<CONST BYTE *>(str), str.strlen() );
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
01.07.08 15:31 #10
Wenn ich das so mache bekomme ich folgende Fehlermeldung:
request for member strlen in str, which is of non-class type char[260]
Gruß
Sunflower84
-
Liegt wohl an der Hitze

Muss natürlich heißen :GrußCode :1
strlen(str)
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
02.07.08 08:13 #12
Super, danke das klappt.
Hab aber noch ein Problem.
Der Pfad wird von einem Wizard in der Registry ausgelesen und angezeigt. Habe aber gerade gemerkt das er nur den Pfad auslesen kann
wenn 2 \\ zwischen den Ebenen sind. Also C:\\... usw. Dann darf die exe an sich nicht mit in den Pfad rein, sondern anstelle der exe
noch ein bestimmter Ordnername.
Ist so etwas überhaupt möglich?
Vielen Dank für eure Hilfe.
Gruß
Sunflower84
-
02.07.08 08:46 #13
Hab gerade die Funktion strcat() gefunden, mit der kann ich meinen Ordnernamen anhängen.
Jetzt müsste man den Pfad noch irgendwie escapen und die Programm exe aus dem Pfad entfernen.
Bin für jede Hilfe dankbar
Gruß
Sunflower84
-
Hallo,
du musst den String dafür zerlegen, d.h. den Teil mit der exe hinten abschneiden und stattdessen den Ordner dort einsetzen.
Wenn ich dich richtig verstanden habe, müsste das so funktionieren:
GrußCode cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#include <string> // ... char buffer[MAX_PATH]; GetModuleFileName(NULL, buffer, MAX_PATH); std::string str(buffer); str = str.substr(0, str.find_last_of("\\") + 1) + "Anderer Ordner\\"; // ... RegSetValueEx( hKey, "TESTKEY", 0, REG_SZ, reinterpret_cast<CONST BYTE *>(str.c_str()), str.size() );
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
02.07.08 09:16 #15
Vielen Dank. Das klappt jetzt bis auf escaped. In der regestry wird nur ein "\" angezeigt. Deshalb kann der Wizard immer noch nicht den Pfad auslesen.
Gruß
Sunflower84
Ähnliche Themen
-
[C++]Registry Eintrag
Von Bumbbleman im Forum C/C++Antworten: 2Letzter Beitrag: 02.10.09, 18:00 -
VB 6 Registry Eintrag löschen
Von nicok im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 15.10.06, 14:41 -
Hardwarekey Eintrag in Registry geändert...
Von Wholy im Forum VisualStudio & MFCAntworten: 5Letzter Beitrag: 30.04.04, 16:05 -
Registry eintrag aktivieren!
Von MWA im Forum VisualStudio & MFCAntworten: 7Letzter Beitrag: 29.04.04, 14:06 -
[C++] Eintrag der Registry auslesen
Von enrique im Forum C/C++Antworten: 2Letzter Beitrag: 15.05.03, 01:39





Zitieren
Login






