Discussion:
Registry enumerieren
(zu alt für eine Antwort)
Wolfgang Badura
2011-06-13 18:13:43 UTC
Permalink
Hallo!

Ich möchte alle registrierten Dateierweiterungen in HKEY_CLASSES_ROOT
enumerieren und in einer Datatable speichern.

Wie stelle ich das an, da ich ja keine spezielle Erweiterung abfragen
möchte,
sondern eben alle mit Ihrem Standardwert ermitteln möchte.

Danke im Voraus für eine Hilfestellung.

Wolfgang
Armin Zingler
2011-06-13 18:32:30 UTC
Permalink
Post by Wolfgang Badura
Hallo!
Ich möchte alle registrierten Dateierweiterungen in HKEY_CLASSES_ROOT
enumerieren und in einer Datatable speichern.
Wie stelle ich das an, da ich ja keine spezielle Erweiterung abfragen
möchte,
sondern eben alle mit Ihrem Standardwert ermitteln möchte.
Danke im Voraus für eine Hilfestellung.
Wolfgang
Hallo Wolfgang,

schön, mal wieder was von dir zu lesen.

Im Prinzip:

Dim names As String()
Dim dt As New DataTable

dt.Columns.Add("keyname")
dt.Columns.Add("defaultValue")

names = Microsoft.Win32.Registry.ClassesRoot.GetSubKeyNames

For Each Name As String In names
Dim subkey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(Name)
Try
Dim defaultValue = subkey.GetValue(Nothing)

dt.Rows.Add(Name, defaultValue)
Finally
subkey.Close()
End Try
Next

Da unter HKCR nicht nur Erweiterungen gespeichert sind - siehst du ja per Regedit - musst
du noch wie gewünscht rausfiltern.


Freundliche Grüße nach Österreich!
--
Armin
Wolfgang Badura
2011-06-14 06:54:34 UTC
Permalink
Hallo Armin!
Post by Armin Zingler
schön, mal wieder was von dir zu lesen.
Ich versuche nicht zu verblöden und habe mich auf ein kleines Problem
gestürzt.
Post by Armin Zingler
names = Microsoft.Win32.Registry.ClassesRoot.GetSubKeyNames
For Each Name As String In names
Das war des Pudels Kern.

Aus den vielen Möglichkeiten der Intellisense habe ich einfach nicht die
Richtige Variante gefunden.

Da ich heute noch mit dem PKW meiner Frau beschäftigt bin, denn sie fährt
auf ein paar Tage nach Grado,
kann ich das erst morgen einbauen.

Besten Dank wieder für Deine Unterstützung

Wolfgang
Wolfgang Badura
2011-06-15 13:05:21 UTC
Permalink
Hallo Armin!
Post by Armin Zingler
Dim names As String()
Dim dt As New DataTable
dt.Columns.Add("keyname")
dt.Columns.Add("defaultValue")
names = Microsoft.Win32.Registry.ClassesRoot.GetSubKeyNames
For Each Name As String In names
Dim subkey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(Name)
Try
Dim defaultValue = subkey.GetValue(Nothing)
dt.Rows.Add(Name, defaultValue)
Finally
subkey.Close()
End Try
Next
Da unter HKCR nicht nur Erweiterungen gespeichert sind - siehst du ja per Regedit - musst
du noch wie gewünscht rausfiltern.
Hat alles bestens funktioniert.
Ich habe noch die mit den Dateierweiterungen verknüpften Programme
ermittelt, denn darum ging es.
Der Schlüssel war
Post by Armin Zingler
names = Microsoft.Win32.Registry.ClassesRoot.GetSubKeyNames
For Each Name As String In names
Auch wenn ich schon Subschlüssel ermitteln und setzen konnte, einfach alle
SubKeyNames zu ermitteln war das Problem.
Warum ich das in der lokalen Hilfe nicht fand verstehe ich nun nicht.
Letzendlich war es dann dank Deiner Hilfe aber einfach.

Danke
Wolfgang

Loading...