2016-05-23 15 views
0

here http://img.prntscr.com/img?url=http://i.imgur.com/ONA5ICx.pngWie kann ich den Registrierungswert bearbeiten, wenn ich den vollständigen Namen eines Feldes nicht weiß?

Auf dem Screenshot ist das, was ich mit im Grunde zu tun habe ich kenne den zweiten Teil des Namens nicht kennen, bevor mein Spiel, weil seine startet erzeugt auf dem Monitor ID oder etwas dem Zufall basiert.

  1. Ich mag würde, wenn der Schlüssel exist
  2. Erhalten Sie vollen Namen durch einen Teil des Namens überprüfen, seine, wenn
  3. Richte meine Wert gefunden für es

Zur Zeit benutze ich das und es ist einfach nicht möglich so denke ich.

RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\AAA\MyApp\test\", false); 

if (key != null) 
{ 
    return (string)key.GetValue("Screenmanager Resolution ...."); 
} 
else 
{ 
    return null; 
} 

dann möchte ich den Wert selbst einstellen, wie

key.SetValue("Screenmanager Resolution Width_h182942802", 1024, RegistryValueKind.DWord); 
+0

Also durchlaufen Sie alle Werte und finden Sie den gewünschten Wert? – SLaks

+0

Wie? Heute versuche ich das erstmal. Ich weiß nur, wie man Felder mit genauen Werten liest oder schreibt. Wie wählt man alle Felder aus und bekommt ihre Namen? –

+0

Etwas wie? für (int x = 0; x <(int) key.Length; x ++) { key.Name.Contains ("Screenmanager Auflösung Breite"); } –

Antwort

2

Sie können die Wertnamen mit GetValueNames() und dann sehen, ob die „Bildschirmauflösung *“ Wert vorhanden ist:

string[] valueNames = key.GetValueNames(); 
string valueName = valueNames.FirstOrDefault(s => s.StartsWith("Screenmanager Resolution Width_")); 
if(valueName != null) 
{ 
    return key.GetValue(valueName); 
} 

oder ohne LINQ:

foreach(string valueName in key.GetValueNames()) 
{ 
    if(valueName.StartsWith("Screenmanager Resolution Width_")) 
     return key.GetValue(valueName); 
} 
return null; 
+0

Danke ich habe 2 Stunden ohne LINQ versucht aber ich denke es liest immer den letzten Schlüssel. Also gab es null oder Screenmanager Auflösung Width_ Aber mit dem LiNQ habe ich es ohne Probleme funktioniert –