C# 利用WMI进行注册表监视

原创 2007年10月03日 11:20:00

VERSION 5.00
Begin VB.Form frmMain
   Caption         =   "Form1"
   ClientHeight    =   3090
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   4680
   LinkTopic       =   "Form1"
   ScaleHeight     =   3090
   ScaleWidth      =   4680
   StartUpPosition =   3  '窗口缺省
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private WithEvents objRegVaule As SWbemSink
Attribute objRegVaule.VB_VarHelpID = -1
Private WithEvents objRegTree As SWbemSink
Attribute objRegTree.VB_VarHelpID = -1
Private WithEvents objRegKey As SWbemSink
Attribute objRegKey.VB_VarHelpID = -1

Private Sub Form_Load()
    Dim objSWbemServices As SWbemServices
    'Set objRegVaule = New SWbemSink
    Set objRegTree = New SWbemSink
    Set objRegKey = New SWbemSink
    Set objSWbemServices = GetObject("winmgmts:root/default")
    'objSWbemServices.ExecNotificationQueryAsync objRegVaule, "SELECT * FROM RegistryValueChangeEvent WHERE ((Hive='HKEY_LOCAL_MACHINE' AND " & "KeyPath='SYSTEM//CurrentControlSet//Services//USBSTOR' AND ValueName='Start') Or (Hive='HKEY_LOCAL_MACHINE' AND " & "KeyPath='SYSTEM//CurrentControlSet//Control//StorageDevicePolicies' AND ValueName='WriteProtect'))"
    objSWbemServices.ExecNotificationQueryAsync objRegTree, "SELECT * FROM RegistryTreeChangeEvent WHERE Hive='HKEY_LOCAL_MACHINE' AND " & "RootPath='SYSTEM//CurrentControlSet//Services//USBSTOR'"
'    objSWbemServices.ExecNotificationQueryAsync objRegKey, "SELECT * FROM RegistryKeyChangeEvent WHERE Hive='HKEY_LOCAL_MACHINE' " & "AND KeyPath='SOFTWARE//Microsoft//Windows NT//CurrentVersion'"
End Sub


Private Sub Form_Unload(Cancel As Integer)
    'objRegVaule.Cancel
    objRegTree.Cancel
    objRegKey.Cancel
End Sub

Private Sub objRegVaule_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemObject, ByVal objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet)
    Dim swProperty As SWbemProperty, swPropertys As SWbemPropertySet
    Set swPropertys = objWbemObject.Properties_
    For Each swProperty In swPropertys
        'On Error Resume Next
        MsgBox swProperty.Name   ' & vbNewLine & swProperty.Value
    Next
End Sub


Private Sub objRegTree_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemObject, ByVal objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet)
    Dim swProperty As SWbemProperty, swPropertys As SWbemPropertySet
    Set swPropertys = objWbemObject.Properties_
'    Dim objSWbemServices As SWbemServices
'    Set objRegVaule = New SWbemSink
'    Set objSWbemServices = GetObject("winmgmts:root/default")
'    objSWbemServices.ExecNotificationQueryAsync objRegVaule, "SELECT * FROM RegistryValueChangeEvent WHERE ((Hive='HKEY_LOCAL_MACHINE' AND " & "KeyPath='SYSTEM//CurrentControlSet//Services//USBSTOR' AND ValueName='Start') Or (Hive='HKEY_LOCAL_MACHINE' AND " & "KeyPath='SYSTEM//CurrentControlSet//Control//StorageDevicePolicies' AND ValueName='WriteProtect'))"
    For Each swProperty In swPropertys
        'On Error Resume Next
        MsgBox swProperty.Name & vbNewLine & swProperty.Value
    Next
End Sub

Private Sub objRegKey_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemObject, ByVal objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet)
    Dim swProperty As SWbemProperty, swPropertys As SWbemPropertySet
    Set swPropertys = objWbemObject.Properties_
    For Each swProperty In swPropertys
        On Error Resume Next
        MsgBox swProperty.Name & vbNewLine & swProperty.Value
    Next
End Sub
 

C#: WMI 获取远程 Windows 主机信息

起步文档:WMI 基本介绍WMI调用基本步骤一个简单的远程访问例子:(参考自MSDN: How To: Connect to a Remote Computer)using System; using...
  • Stpallas
  • Stpallas
  • 2016年03月06日 02:39
  • 1574

.net中的WMI编程(一):WMI介绍及简单应用

前言: 由于.net的某些特点使它脱离了操作系统底层,所以如果我们想获得一些底层的操作系统信息的时候比较困难,经常需要DllImport技术,这对一些对C/C++不熟悉的程序员来说简直是一个梦魇(对于...
  • zhoufoxcn
  • zhoufoxcn
  • 2008年01月14日 02:48
  • 19996

c#与WMI使用

c#与WMI使用技巧集1、 什么是WMI WMI是英文Windows Management Instrumentation的简写,它的功能主要是:访问本地主机的一些信息和服务,可以管理远程计算机(当然...
  • highfly2008
  • highfly2008
  • 2009年02月03日 18:48
  • 4695

Visual C#中操作WMI的类库简介

.Net FrameWork SDK对WMI提供了全面的支持,.Net FrameWork SDK为Visual C#能够操作WMI提供了一个专门的命名空间"System.Management"。在命...
  • Linux7985
  • Linux7985
  • 2010年06月28日 11:32
  • 4958

C#中用WMI获取服务器信息

摘自:http://tianmoboping.blog.163.com/blog/static/157395322008949326240/ 什么是WMI WMI是英文Window...
  • windxxf
  • windxxf
  • 2011年09月16日 09:30
  • 3117

C#中通过wmi获取硬件的信息

1、简介       通过C#可以很简易的得到计算机硬件的信息。具体步骤如下:       1)添加名为System.ManageMent的DLL。具体方法为:解决方案->添加引用-> .NET ...
  • taozpwater
  • taozpwater
  • 2012年10月08日 23:37
  • 3518

win32 API函数注册表监控C#

  • 2009年09月02日 18:29
  • 24KB
  • 下载

用WMI操作注册表

REG.HTA==========================================用WMI操作注册表#lArea {  float:left;}#lArea DIV { margin:...
  • donghid
  • donghid
  • 2006年02月04日 16:25
  • 2526

怎样实现WMI查询注册表信息

  • 2013年07月17日 15:38
  • 15KB
  • 下载

WMI遍历注册表(VBS编程)

最近编写了个遍历注册表的VBS代码,可以检查显示有相关关键字的注册表子键或键值。     '************************************* '清理含有360的注册表...
  • jinggangshi
  • jinggangshi
  • 2013年05月17日 15:16
  • 1753
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# 利用WMI进行注册表监视
举报原因:
原因补充:

(最多只允许输入30个字)