Registry Wert ändern - Vorgehensweise?
-
Hi!
Mein Compiler (Dev++) zeigt leider einen Fehler:
17 C:\Dokumente und Einstellungen\Admin\Desktop\reg.cpp `dwType' undeclared (first use this function)
-
Denk doch auch mal selber ein bisschen nach.
DWORD dwType;
-
Jeder hat mal klein angefangen,...
...aber in meinem ersten Thread schrieb ich bereits, dass du die Deklarationen aus dem von dir geposteten Code-Abschnitt übernehmen sollst!
-
Hey Jungs,
leider werden mir nur kryptische Zeichen ausgegeben
Hier mein Code:
#include <conio.h> #include <windows.h> #include <stdio.h> #include <tchar.h> #include <iostream> using namespace std; int main(int argc, char *argv[]) { // ############# HKEY hKey ; DWORD dwType; TCHAR szValue[100]; DWORD dwSize = sizeof(szValue)*sizeof(TCHAR); RegOpenKeyEx (HKEY_CURRENT_USER, "HKEY_CURRENT_USER\\AppEvents\\XXX_Key", 0, KEY_SET_VALUE, &hKey); LONG lRet = RegQueryValueEx(hKey, _T("EintragsName"), NULL, &dwType, (LPBYTE) szValue, &dwSize); RegCloseKey(hKey) ; printf(szValue); // ############## printf ("Press any key..."); getch(); return 0; }
-
RegOpenKeyEx(HKEY_CURRENT_USER, "AppEvents\\XXX_Key", 0, KEY_SET_VALUE, &hKey);
-
Hi, es geht leider immer noch nicht
-
Dann benutze halt die CRegistry-Klase, die du auf meiner Homepage findest. Dann geht das so:
CRegistry reg; reg.SetRoot(HKEY_CURRENT_USER); reg.OpenPath( TEXT("AppEvents\\XXX_Key") ); TCHAR szValue[100]; reg.ReadString(TEXT("EintragsName"), szValue, 100);
-
Du musst einfach das vierte Parameter von RegOpenKeyEx in KEY_READ ändern, dann klappt es. Sorry, das war mein Fehler, denn ich habe den Funktionsaufruf ja so gepostet.
Zeile 5 und 7 kannst du übrigens entfernen. Die brauchtst du in deinem Programm nicht!
Mit freudlichen Grüßen
WilMen
-
Also er zeigt jetzt nur noch ein Zeichen... Ein Smiley^^
-
Hallo xbug,
also ich habe das Programm kompiliert und ausgeführt und alles hat geklappt. Ist der Schlüssel, dessen Wert du lesen möchtest, überhaupt schon erstellt?
-
Ja, ich habe es sogar mit einem anderen Key versucht
-
#include <windows.h> #include <stdio.h> int main(int argc, char *argv[]) { HKEY hkey; char szBuffer[255]; char KeyValue[255] ; unsigned long lBufferSize = 255; RegOpenKeyEx(HKEY_CURRENT_USER, "Control Panel\\Desktop", 0, KEY_READ, &hkey) ; RegQueryValueEx(hkey, "MenuShowDelay", NULL, NULL, KeyValue, &lBufferSize) ; RegCloseKey(hkey) ; printf("Wert des Schluessels: %s",KeyValue, "\n\nPress any key...") ; getchar() ; return (0); }
Kompiler mal dieses Code. Ich habe ihn mit dem "Dev-C++ 4.9.9.2" kompiliert und es funktioniert!
Sollte es jetzt immer noch nicht funktionieren, dann muss es am Compiler liegen!
-
14 C:\Dokumente und Einstellungen\Admin\Desktop\read.cpp invalid conversion from `char*' to `BYTE*'
-
Probier es mit einem expliziten Typ-Casting!
// ... RegQueryValueEx(hkey, "MenuShowDelay", NULL, NULL, (BYTE *) KeyValue, &lBufferSize) ; // ...
-
Juhu, es geht^^ Und weshalb ging es bei dir und bei mir nicht?
-
Mit welchem Compiler arbeitest du?
-
Eigentlich Standard... Also schon bei Dev C++ mitgeliefert. Gibt es denn bessere Alternativen?
-
Ich arbeite, wie gesagt, mit dem gleichen! Keine Ahnung, wieso es bei dir nicht geklappt hatte.
Für private Zwecke reicht der Dev-C++-Compiler aus. Ich habe außerdem noch nie von einem anderen kostenlosen Compiler gehört, der so gut ist. Du kannst also getrost mit ihm weiterarbeiten!
-
Okay, danke!
-
WilMen schrieb:
Für private Zwecke reicht der Dev-C++-Compiler aus. Ich habe außerdem noch nie von einem anderen kostenlosen Compiler gehört, der so gut ist. Du kannst also getrost mit ihm weiterarbeiten!
Oha! Also erstmal ist der DEV-C++ kein Compiler, sondern eine IDE. Der Compiler ist IMHO der MinGW. Und ja, es gibt viel bessere und auch kostenlose IDEs, z.B. Code::Blocks. Der DEV-C++ wird im übrigen schon seit längerem nicht mehr weiterentwickelt. Es ist also nicht angeraten, mit dem weiterzuarbeiten.
@xbug: Hasu du wenigstens mal meine KLasse ausprobiert?