Доброго времени суток, уважаемые форумчане. Хочу написать маленькую программу, которая будет проверять изменения одной папки реестра, если есть изменения, сразу их удалять. Вы не могли бы подсказать как мониторить не конкретный ключ, а папку реестра? Заранее благодарю. P.S С реестром еще не сталкивался...
папка реестра и есть ключ. то что ты подразумеваешь под ключём, является значением. для мониторинга ключа юзай что-то типа этого: Code: Public Class RegistryWatcher Public MonitorCollection As New Collections.Generic.Dictionary(Of String, Monitor) Public Event RegistryChanged(ByVal M As Monitor) Public Enum HKEY_ROOTS As Integer HKEY_CLASSES_ROOT = 0 HKEY_CURRENT_USER = 1 HKEY_LOCAL_MACHINE = 2 HKEY_USERS = 3 HKEY_CURRENT_CONFIG = 4 End Enum Public Sub AddWatcher(ByVal Root As HKEY_ROOTS, ByVal Path As String, ByVal ID As String) If MonitorCollection.ContainsKey(ID) = False Then Dim RegMon As New Monitor(Root, Path, ID) AddHandler RegMon.Changed, AddressOf OnRegistryChanged MonitorCollection.Add(ID, RegMon) End If End Sub Public Sub RemoveWatcher(ByVal ID As String) If MonitorCollection.ContainsKey(ID) = True Then MonitorCollection(ID).StopWatch() MonitorCollection.Remove(ID) End If End Sub Private Sub OnRegistryChanged(ByVal M As Monitor) RaiseEvent RegistryChanged(M) End Sub Public Class Monitor Private mRoot As HKEY_ROOTS Private mPath As String Private mID As String Private mStop As Boolean Public ReadOnly Property Root() As HKEY_ROOTS Get Return mRoot End Get End Property Public ReadOnly Property Path() As String Get Return mPath End Get End Property Public ReadOnly Property ID() As String Get Return mID End Get End Property Public Event Changed(ByVal M As Monitor) Sub New(ByVal NewRoot As HKEY_ROOTS, ByVal NewPath As String, ByVal NewID As String) mRoot = NewRoot mPath = NewPath mID = NewID Dim T As New Threading.Thread(AddressOf Watcher) T.Start() End Sub Public Sub StopWatch() mStop = True End Sub Private Sub Watcher() Dim WMIObject As Object Dim WMIEvent As Object Dim WMICurrEvent As Object mPath = Replace(mPath, "\", "\\") WMIObject = GetObject("winmgmts:\\.\root\default") WMIEvent = WMIObject.ExecNotificationQuery( _ "SELECT * FROM RegistryKeyChangeEvent WHERE Hive='" & _ mRoot.ToString & "' AND " & "KeyPath='" & mPath & "'") Do Try If mStop = True Then mStop = False Exit Sub End If WMICurrEvent = WMIEvent.NextEvent(500) RaiseEvent Changed(Me) Catch ex As Exception End Try Loop End Sub End Class End Class