Wie kann ich einen Schlüsselwert der Registrierung lesen und mit der MessageBox () auf dem Bildschirm ausgeben?

8

Ich bin neu in C ++ und WinCe entwickelt.

Ich möchte eine Zeichenfolge aus der Registrierung lesen und mit MessageBox() anzeigen. Ich habe folgendes versucht.

%Vor%

Also ich weiß etwas falsch hier, aber wie kann ich lösen?

    
Luther 20.05.2012, 17:44
quelle

5 Antworten

19

Das Navigieren durch die Win32-API kann ein schwieriges Geschäft sein. Die Registrierungs-APIs sind einige der komplizierteren. Hier ist ein kurzes Programm, um zu demonstrieren, wie man eine Registry-Zeichenfolge liest.

%Vor%

Hinweise:

  1. Ich habe kein CE, also ist dies eine einfache Win32-Anwendung, die für Unicode kompiliert wurde. Ich habe diesen Weg genommen, weil CE keine ANSI-Zeichen verwendet.
  2. Ich habe eine Reihe von C ++ - Funktionen genutzt. Am deutlichsten std::wstring . Dies macht die Handhabung von Strings zu einem Kinderspiel.
  3. Ich habe Ausnahmen für die Fehlerbehandlung verwendet. Sie könnten dies durch einen anderen Mechanismus ersetzen, aber es diente meinem Zweck, die Fehlerbehandlungsprobleme im Hintergrund zu halten.
  4. Die Verwendung von Ausnahmen macht das Schließen des Registrierungsschlüssels leicht unordentlich. Eine bessere Lösung wäre die Verwendung einer RAII-Klasse zum Einschließen der Lebensdauer des Registrierungsschlüssels. Ich habe das zur Vereinfachung weggelassen, aber im Produktionscode würden Sie diesen zusätzlichen Schritt machen wollen.
  5. Normalerweise gibt RegQueryValueEx REG_SZ data zurück, die null-terminiert sind. Dieser Code behandelt das, indem er über das erste Nullzeichen hinaus schneidet. Falls der zurückgegebene Wert nicht null-terminiert ist, wird diese Kürzung nicht passieren, aber der Wert ist immer noch gut.
  6. Ich habe gerade auf meine Konsole gedruckt, aber es wäre trivial, wenn Sie MessageBox aufrufen. So: MessageBox(0, value.c_str(), L"Caption", MB_OK)
David Heffernan 20.05.2012, 19:42
quelle
2

Hier ist ein vollständiger Quellcode, um einen Schlüsselwert der Registrierung zu lesen und auf den Bildschirm zu drucken:

%Vor%

Ich hoffe, dieses Beispiel wird hilfreich sein, wenn Sie dieses Problem suchen.

    
RajibTheKing 07.07.2015 20:09
quelle
1

Dies ist nicht getestet (mein Gerät hat nicht Ihren Schlüssel / Wert), aber kompiliert für CE und gibt Ihnen das Wesentliche, wie Sie tun, was Sie wollen:     #include

%Vor%     
ctacke 20.05.2012 22:55
quelle
-1

Wenn Sie ein Char-Array verwenden, müssen Sie nicht den Puffer, sondern den Zeiger auf den Puffer setzen, wie folgt:

%Vor%     
João Marcelo Brito 20.05.2012 19:08
quelle
-1

benutze einfach RegQueryValueEx und lege es in buf

    
muko 18.07.2013 12:34
quelle

Tags und Links