Import-System
Importe System.Threading
Importe System.Runtime.InteropServices
Importe Microsoft.Win32
Allgemeine Kategorie RegistryNotification
'egl1044
'Erbauer
Allgemeine Vorneue ()
Enden-Unterseeboot
_
Allgemeines Enum RegNotifyFilter
REG_NOTIFY_CHANGE_NAME = 1 'mitteilen den Anrufer, wenn ein subkey addiert oder gelöscht.
REG_NOTIFY_CHANGE_LAST_SET = 4 'benachrichtigen den Anrufer über Änderungen an einem Wert des Schlüssels. Dieses kann das Addieren oder das Löschen eines Wertes oder das Ändern eines vorhandenen Wertes mit.einschließen.
Ende Enum
Allgemeines Enum RegType
HKEY_LOCAL_MACHINE = &H80000002
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_USERS = &H80000003
Ende Enum
'Eingeführt nicht in diesem Beispiel.
' _
'Private Struktur REG_NOTIFY_INFORMATION
' Schwaches NextEntryOffset als ganze Zahl
' Schwache Tätigkeit als ganze Zahl
' Schwaches RegNameLength als ganze Zahl
' Schwaches RegName als IntPtr
'Enden-Struktur
_
Private geteilte Funktion CeFindCloseRegChange (ByVal hChangeHandle als IntPtr) als ganze Zahl
Enden-Funktion
_
Private geteilte Funktion CeFindFirstRegChange (ByVal hKey als IntPtr, ByVal bWatchSubtree als ganze Zahl, ByVal dwNotifyFilter als RegNotifyFilter) als IntPtr
Enden-Funktion
_
Private geteilte Funktion CeFindNextRegChange (ByVal hChangeHandle als IntPtr) als ganze Zahl
Enden-Funktion
_
Private geteilte Funktion RegOpenKeyEx (ByVal hKey als RegType, ByVal lpSubKey, wie Schnur, ByVal ulOptions als ganze Zahl, ByVal als ganze Zahl samDesired, ByRef phkResult als IntPtr) als ganze Zahl
Enden-Funktion
_
Private geteilte Funktion RegCloseKey (ByVal hKey als IntPtr) als ganze Zahl
Enden-Funktion
_
Private geteilte Funktion WaitForSingleObject (ByVal Handgriff als IntPtr, ByVal Frau als ganze Zahl) als ganze Zahl
Enden-Funktion
Privates hKey wie IntPtr = IntPtr.Zero '/Registerhandgriff
Privates hChangeHandle wie IntPtr = IntPtr.Zero '/Registermitteilungshandgriff
Privates NotifyThread als Gewinde = nichts
Privates bCancel, wie Boolesch = falsch
Allgemeines VorStartRegistryWatcher ()
'Uhr für Mitteilungen auf einem unterschiedlichen Gewinde.
bCancel = falsch
NotifyThread = neues Gewinde (AddressOf RegistryNotificationThread)
NotifyThread.IsBackground = ausrichten en
NotifyThread.Start ()
Enden-Unterseeboot
Allgemeines VorStopRegistryWatcher ()
'Mitteilungen auf dem unterschiedlichen Gewinde annullieren.
bCancel = ausrichten en
CeFindCloseRegChange (hChangeHandle)
Enden-Unterseeboot
' <>
Privates VorRegistryNotificationThread ()
'Änderungsmitteilungen auf neuem Gewinde laufen lassen.
RegisterRegistryChange (RegType.HKEY_LOCAL_MACHINE, „Software \ fabrikan“, 0)
Enden-Unterseeboot
Privates VorRegisterRegistryChange (ByVal rootKey als RegType, ByVal keyName als Schnur, ByVal watchSubTree als ganze Zahl)
'Ermittelt Registermitteilungen.
Wenn RegOpenKeyEx (rootKey, keyName, 0, 0, hKey) <> 0 dann
MsgBox („RegOpenKeyEx failed.")
Rückkehr
Beenden wenn
'TODO: /Änderungsfiltereinstellungen hier
hChangeHandle = CeFindFirstRegChange (hKey, watchSubTree, RegNotifyFilter.REG_NOTIFY_CHANGE_LAST_SET)
Wenn hChangeHandle.ToInt32 = -1 dann
MsgBox („CeFindFirstRegChange ausfiel“)
RegCloseKey (hKey)
Rückkehr
Beenden wenn
Tun während das zutreffende <> bCancel
WaitForSingleObject (hChangeHandle, Timeout.Infinite)
MsgBox („Änderung ermittelt! ")
CeFindNextRegChange (hChangeHandle)
Thread.Sleep (0)
Schleife
'TODO: /
CeFindCloseRegChange (hChangeHandle)
RegCloseKey (hKey)
Enden-Unterseeboot
Allgemeines VorDebugCreateRegistryEntry ()
'Verursacht den angegebenen Schlüssel im Register für Entstörung.
Schwaches rk als RegistryKey = Registry.LocalMachine.OpenSubKey („Software“, zutreffend)
rk.CreateSubKey („fabrikan“)
rk. Schließen ()
Unterseeboot beenden
Allgemeines VorDebugChangeRegistryValue ()
'Eine Änderung im Register für Entstörung simulieren.
Rk als RegistryKey = Registry.LocalMachine.OpenSubKey („Software \ fabrikan“, zutreffende) verdunkeln
rk.SetValue („fabrikans“, TimeOfDay.Second.ToString, RegistryValueKind.String)
rk. Schließen ()
Unterseeboot beenden
Kategorie beenden
|