Laden...

RegistryKey.GetSubKeyNames liefert nicht alle Subkeys, die im Regedit angezeigt werden

Erstellt von Luzius vor 12 Jahren Letzter Beitrag vor 12 Jahren 3.215 Views
L
Luzius Themenstarter:in
4 Beiträge seit 2011
vor 12 Jahren
RegistryKey.GetSubKeyNames liefert nicht alle Subkeys, die im Regedit angezeigt werden

Hallo,

(ich hoffe die Frage ist hier richtig gestellt)

Ich möchte aus der Registry Subkeys auslesen, was auch soweit funktioniert.

Nur unterschlägt der Code mir bestimmte Subkeys.

Zur Veranschaulichung:

Ich lese folgenden Tree aus: HKLM/Software/JavaSoft/Java Runtime Environment/

in diesem Tree habe ich folgende Subkeys: 1.6, 1.6.27, 1.7 und 1.70

Nun möchte ich diese Subkeys mit GetSubKeyNames() auslesen. (Ja ich brauche erstmal nur die Namen der Subkeys)
Testweise speicher ich das in ein string [].
Das funktioniert nur zum Teil. Ausgelesen werden 1.6 und 1.6.27.
Die anderen beiden (1.7 und 1.7.0) tauchen in dem string [] überhaupt nicht auf.

Jetzt dachte ich mir.. okay.. sind bestimmt die Rechte der beiden, im string [] fehlenden, Subkeys. Aber hier hat der User Leserecht drauf und auch eine Änderung auf Vollzugriff bringt nichts.

Hat vielleicht noch jemand eine idee warum nur ein Teil der Subkeys ausgelesen wird?

Hier noch der Code mit dem ich zum testen auslese:


RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\JavaSoft\\Java Runtime Environment");
            string[] names = key.GetSubKeyNames();

Inhalt von names: [0]: 1.6 [1]: 1.6.27

gruss
Andre

Gelöschter Account
vor 12 Jahren

Welche Windows Version benutzt du?

L
Luzius Themenstarter:in
4 Beiträge seit 2011
vor 12 Jahren

Das habe ich natürlich vergessen zu erwähnen 😉

Windows 7, 64bit

Testsystem mit der selben Registry config des oben genannten Branchs:
Windows7, 32bit

C
1.214 Beiträge seit 2006
vor 12 Jahren

Ich hab sowas noch nicht beobachtet. Könnte mir höchstens vorstellen, dass es mit der Registry Redirection zu tun hat, wenn dein Programm 32 Bit ist.

L
Luzius Themenstarter:in
4 Beiträge seit 2011
vor 12 Jahren

Tatsache.. Das war es.. Das ich darauf nicht gekommen bin KopfTisch

Was mich nur wundert.. Das Programm wird in 32bit erstellt.
unter 64bit bekomme ich 2 keys von 4 angezeigt..
unter 32bit 2 von 2 keys

nun habe ich den Buildmode auf x64 geändert und ein 64bit build gemacht:

ergebnis:

64bit system: 4 von 4 keys.

buildmode auf x86 zurück:

64bit: 2 von 4:
32Bit. nun endlich 4 von 4.

das habe ich bei arbeiten mit der reg nie erlebt. (vorallem nicht das ein umstellen auf x64 und dann zurück auf x86 die probleme auf 32bit behebt.)

Dafür weiss ich nun was ich zu tun habe. 2 Builds für die verschiedenen Architekturen erstellen.

Vielen Dank für deine Hilfe 😃

1.346 Beiträge seit 2008
vor 12 Jahren

Was spricht gegen Any CPU?

L
Luzius Themenstarter:in
4 Beiträge seit 2011
vor 12 Jahren

Unter AnyCPU habe ich das selbe merkwürdige Problem.

Da bekomme ich nur 2 der vorhandenen 4 Schlüssel angezeigt.
Hier hilft auch nicht der switch des Buildmodes von x64 zurück auf AnyCPU (Beim Switch von x86 auf x64 und wieder zurück auf x86 funktioniert der 32bit Build nun auch fehlerfrei unter 32bit Systemen. Sprich alle Keys werden aus dem Reg Branch ausgelesen)
Woran das nun genau liegt kann ich nichtmal beantworten.
Ich weiss atm nur das Coder007 mir mit seinem "Tritt in die richtige Richtung" und seinem Hinweis auf das 32bit Programm den nötigen Denkanstoss gegeben hat mal in die Buildmodes zu schauen.

Mit AnyCPU hatte ich auch nie solche Probleme.
Erst seitdem ich das Windows neu aufgesetzt habe bekomme ich diese Problematik zu spüren (Vielleicht ein SecurityUpdate seitens MS.. wer weiß das schon.)

Wichtig ist für mich nur, das nun auf 64bit wie auf 32bit alle Keys ausgelesen werden können. Und wenn ich dafür 2 unterschiedliche Builds machen muss, ist das ein Preis, den ich gerne bezahle 😃
(Die Anwender müssen ja für sich entscheiden welchen Build sie brauchen 😉 )

Gruss
Andre