Ok Leute, ich habe ein wirklich seltsames Problem, wo ich gerade Regedit anschaue und ich sehe, dass der Reg-Schlüssel, nach dem ich suche, existiert.Problem beim Vergleichen von Registrierungsschlüssel-Werten mit String-Methoden
Dies ist der Code, den ich benutze es
public static void GetSoeRegKey()
{
RegistryKey soeKey = Registry.CurentUser.OpenSubKey("TechTools", true);
if (soeKey != null)
{
foreach (string value in soeKey.GetValueNames())
{
//Here's where the problem lies
if (value.Equals("SOEEncPass"))
System.Diagnostics.Debug.WriteLine(value);
}
}
}
So zu erkennen, ich habe durch den Code trat, und jedes Mal, es ist die Ausrichtungs-Schlüssel zu finden und die soeKey.GetValueNames()
Methode die Werte korrekt wiederkehr .
Obwohl ich klar sehen kann, dass der Wert, den ich suche, zurückgegeben wird, wird die if (value.Equals("SOEEncPass"))
nie als wahr ausgewertet.
Ich habe es versucht, so value == "SOEEncPass"
und string.Compare(value, "SOEEncPass")
mit all den StringComparision
Optionen, aber egal, was ich die Linie tun System.Diagnostics.Debug.WriteLine(value);
wird nie ausgeführt.
Fehle ich etwas mit dem Zeichenfolgenvergleich, oder gibt es eine Eigenart, um Schlüssel zu regulieren, die mir nicht bekannt sind?
Dank Tamás, ja ich den einen der Werte sehen kann 'GetValueNames' als' „SOEEncePass“ 'zurückgegeben wird. Für Info wird der Wert als REG_SZ-Typ erstellt, obwohl ich bezweifle, dass das einen Unterschied macht. –
Nur was ich anders gemacht habe, war, dass ich den Unterschlüssel nicht zum Schreiben geöffnet habe. Aber ich nehme an, dass Sie das tun müssen (und es wäre albern, wenn das das Grundproblem wäre). –
Könnte es wegen der Verschlüsselung sein? –