Ich versuche, über eine Liste von Werten in der Windows-Registrierung mit Go aufzulisten, aber ich habe Probleme. Ich habe zwei Ansätze ausprobiert: die Verwendung der von Go bereitgestellten syscall
-Bibliothek zum Aufruf von RegEnumValue
sowie von mit einem Windows-API-Wrapper von lxn . In beiden Fällen habe ich das gleiche Problem. Dies ist der Code, den ich verwende (der momentan die win-Bibliothek von lxn verwendet):
In diesem Fall gibt RegEnumValue
immer den Code 87 zurück, der MSDNs einzige Erklärung ist" Der Parameter ist falsch. "
Hat jemand irgendwelche Ideen, die mich dazu bringen können, in die richtige Richtung zu gehen?
Ein Mitglied des Golred-Unterreddits wies darauf hin, dass ich den Puffern, die an RegEnumValue
übergeben wurden, keinen Speicher zugewiesen habe. Daher habe ich das obige Beispiel wie folgt korrigiert:
Offensichtlich sollte die "magische Zahl" von 72 wahrscheinlich durch etwas anderes ersetzt werden. Es gibt eine andere Methode namens RegQueryInfoKey
, die Informationen über den Registrierungsschlüssel abrufen kann, um die richtige Anzahl an Bytes für den größten Namen und Wert im Schlüssel zuzuweisen.
Vielleicht hat jemand das nützlich gefunden:
%Vor%REG_BINARY-Werte sehen wie "\ x01 \ x00 \ x00 ..."
aus