![]() |
||
![]() |
Mit Visual Basic in die Registry schreibenIch habe versucht, mit Hilfe der VB-Funktion SaveSettings Einträge in der Registrierung zu speichern. Leider greift die Methode immer nur auf einen Zweig unterhalb des VB-Schlüssels zu. Um jedoch Einträge anderer Anwendungen zu ändern, muß ich auch auf Stellen zugreifen, die oberhalb des VB-Schlüssels liegen. Wie ist das möglich? Dazu ist nur der Leistungsumfang von VB (Visual Basic) durch das Einbinden einiger Funktionen des Windows-API (Application Programing Interface) zu erweitern. Das API verfügt über Funktionen, die auch erlauben, was SaveSettings nicht bietet: Die freie Manipulation der Registrierungsdatei. Im Kasten äParameter der API-Funktionenô finden Sie die benötigten Funktionen und ihre Parameter. Declare Function RegCreateKeyEx Lib ôadvapi32.dllô Alias ôRegCreateKeyExAô (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long¶Da jeder Parameter eine Definition des Datentyps benötigt, sehen die Deklarationen recht aufwendig aus. Anstelle des Datentyps Any für den Parameter lpData der Funktion RegSetValueEx können Sie auch den Datentyp String verwenden. Dann ist jedoch die Deklaration dieses Parameters um das Schlüsselwort ByVal zu ergänzen, also: ByVal lpData As String¶Damit Sie den Parametern die richtigen Werte übergeben können, sind noch einige Konstanten zu definieren. Sie benötigen zum Beispiel die Adresse des Schlüssels HKEY_LOCAL_MACHINE, um auf seinen Unterschlüssel zuzugreifen. Dazu erweitern Sie die Anweisungen im Deklarationsbereich durch die entsprechende Zeile aus dem Kasten äWichtige Konstantenô. Zudem brauchen Sie Deklarationen für den Klassentyp des zu übergebenden Parameters, etwa eine 1 für nullterminierte Unicode-Zeichenketten. Public Const REG_SZ = 1¶Weiterhin sind noch einige Konstanten zu deklarieren, die Windows für eine korrekte Spezifikation der Zugriffssicherheit benötigt. Im einzelnen können wir an dieser Stelle nicht auf das Sicherheitskonzept eingehen. Sie finden alle nötigen Konstanten im Kasten äWichtige Konstantenô. Da sie aufeinander aufbauen, übernehmen Sie einfach alle. Stehen die Konstanten fest, legen Sie einen Schlüssel mit diesem Aufruf an: ReturnValue = RegCreateKeyEx (HKEY_LOCAL_MACHINE, ôSoftware\MyAppô, 0, ôREG_SZô, 0, KEY_ALL_ACCESS, 0, hOfNewKey, 0)¶Um dem Schlüssel einen Wert zuzuweisen, verwenden Sie diesen Befehl: ReturnValue = RegSetValueEx (hOfNewKey, ôMyAppNameô, 0, 1, ôJipieee! It Works!ô, 13)¶Wenn Sie kontrollieren wollen, ob die Anweisungen das gewünschte Ergebnis erzielen, starten Sie den Registry-Editor. Mit seiner Hilfe sehen Sie die Auswirkungen Ihrer Anweisung in der Registry. Wichtige Konstanten hKey, Handle eines Registrierungsschlüssels lpszSubKey, Adresse eines Unterschlüssels dwReserved, Reserviert für Windows lpszClass, Adresse eines Klassenbezeichners fdwOptions, Optionsparameter samDesired, Festlegen der Sicherheitsstufe lpSecurityAttributes, Adresse der Sicherheitsstruktur phkResult, Handle des erzeugten Schlüssels lpdwDisposition Adresse des neuen Inhalts hKey, Handle des zu bearbeitenden Schlüssels lpValueName, Adresse des zu setzenden Wertes Reserved, Reserviert für Windows dwType, Optionsparameter lpData, Adresse des Wertes cbData Größe des zu setzenden Wertes |
![]() |