RegGetValue Frage

Ich versuche zu schreiben(was ich dachte wäre) ein einfaches script in C++ zu suchen die registry(SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall speziell) und den Rückgabewert der Wert "DisplayName".

Ich durchgemacht habe in der MSDN-Doku und Stunden bei google gesucht, leider bin ich stecken.

#define BUFFER 8192
char value[255];
DWORD BufferSize = BUFFER;

if(RegGetValue(HKEY_LOCAL_MACHINE,
    _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\"),
    _T("DisplayName"),
    RRF_RT_ANY,
    NULL,
    (PVOID)&value,
    &BufferSize)
    )
{
    _tprintf(TEXT("(%d) %s - %s\n"), i+1, achKey, value);
}

Nun, ich muss in der Lage sein, zum Anhängen achKey der 2. parameter von RegGetValue, so dass es packt die richtigen Werte, wenn die Schleife durch jeden Unterschlüssel.

Ich habe versucht, eine million verschiedene Dinge, leider ist meine Erfahrung in C++ ist ziemlich beschränkt, meine google-Fähigkeiten anscheinend müssen einige Arbeit als gut.

Bearbeiten:
achKey ist der name des Schlüssels:
Ex: NVIDIA-Treiber

So, wenn angehängt, die 2. param Lesen sollte:

SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\NVIDIA Drivers

Hier ist der MSDN-Referenz auf RegGetValue:
http://msdn.microsoft.com/en-us/library/ms724868%28v=vs.85%29.aspx

Ich habe auch versucht, so etwas wie:

wcscat(_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\"), achKey)

Wird es kompilieren, aber dann, wenn Sie ausgeführt wird, stürzt es ab.

Einrücken mit 4 Leerzeichen, um einen code-block, verwenden Sie nicht <pre> oder <code>.
Was ist achKey? Ich nehme an, dass ist der name des Schlüssels, der abgestimmt ist?
OK, danke.
Yessir, es ist der name des Schlüssels.
Stick mit C++ - strings anstelle von char[] : std::string (oder std::wstring für unicode). Das einzige, was Sie dann, dass Sie sich sorgen machen müssen ist, dass Windows-API-Aufrufe wie RegGetValue wohne in einem älteren, hirngeschädigten Welt. Übergeben std::string diese Funktionen verwenden Sie die c_str() Methode. std::string foo = "HKLM/.../"; foo = foo + suffix; RegGetValue(..., foo.c_str(), ...)

InformationsquelleAutor Josh | 2011-06-10

Schreibe einen Kommentar