Entwickler-Ecke

IO, XML und Registry - Registry Key und SubKeys auslesen (x64)


KarlSchmidberger - Mi 05.01.11 14:57
Titel: Registry Key und SubKeys auslesen (x64)
Hallo,

ich schreibe soeben ein Programm für unsere Administratoren in meiner Firma.

Ich benötige eine Methode die mir die Unterschlüssel (SubKey) von einem Schlüssel (Key) zurück gibt

Ein Code (Quelltext, siehe unten) für Win32-OS (x86) habe ich schon, der funktioniert!


Leider funktioniert dieser nicht unter Win64-OS (x64).

Wenn ich z.B. den Pfad \SOFTWARE\Clients\Mail angebe ... sucht die Methode in dem Pfad \SOFTWARE\Wow6432Node\Clients\Mail
das kann ich nicht gebrauchen da ich auf einen Key in \SOFTWARE\ und nicht in \SOFTWARE\Wow6432Node\ zugreifen möchte

Eine Lösung mit .NET 4.0 habe ich schon gefunden. Leider wird derzeit kein .NET in unseren Firma eingesetzt.

Schönen Gruß Karl :)



C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
//Dieser Code liest die Unterschlüssel von HKLM/Software aus und schreibt diese in meine Textbox

using System;
using System.Windows.Forms;
using Microsoft.Win32;
 
namespace RegistryKeysLesen
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string oRegBas = @"\SOFTWARE\Wow6432Node\Clients\Mail";
 
            textBox1.Multiline = true;
            textBox1.ScrollBars = ScrollBars.Vertical;
 
            using (RegistryKey MeinKey = Registry.LocalMachine.OpenSubKey(oRegBas))
            {
                try
                {
                    //for each registry-entry ...
                    foreach (string i in MeinKey.GetSubKeyNames())
                    {
                        textBox1.Text += i + "\r\n"
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
    }
}


Kha - Mi 05.01.11 15:55

Siehe ein paar Threads unter deinem: http://c-sharp-forum.de/viewtopic.php?p=628050#628050

user profile iconKarlSchmidberger hat folgendes geschrieben Zum zitierten Posting springen:
Leider wird derzeit kein .NET in unseren Firma eingesetzt.
Dann ist C# vielleicht keine so schlaue Wahl :mrgreen: .


KarlSchmidberger - Mi 05.01.11 16:11

Hallo,

Sorry, ich meinte natürlich ".NET Version 4.0" :shock:

Wir verwenden derzeit ".NET Version 3.5"

Danke an @Kha


Gruß Karl


KarlSchmidberger - Di 11.01.11 17:22

Hallo,

ich habe das Problem gelöst !

Folgender Link hat mir sehr geholfen.

http://www.roelvanlisdonk.nl/?p=919

Beachte bitte wenn man den Code verwendet das da noch ein paar Kopierfehler sind ...
"stringregKeyPath" soll zum Beispiel "string regKeyPath" sein

schöne Grüße
Karl