ImageVerifierCode 换一换
格式:DOCX , 页数:6 ,大小:20.92KB ,
资源ID:18292205      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18292205.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(利用WMI获取系统信息Word格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

利用WMI获取系统信息Word格式.docx

1、“状态:item.Status&“类型:item.SystemType&“生产厂家:item.Manufacturer&“型号:item.Model&“内存:”&item.totalPhysicalMemory24000&“mb”&“域:item.domain&vbCrLfs=s&“工作组”&item.Workgroup&获得工作组和域的选项不能同时用 s=s&“当前用户:item.username&“启动状态”&item.BootupState&“该计算机属于”&item.PrimaryOwnerName&“系统类型”&item.CreationClassName&“计算机类类型”&item

2、.Description&vbCrLf For i=0 To 1这里假设安装了两个系统s=s&Chr(5)&“启动选项”&i&“:item.SystemStartupOptions(i)_&vbCrLf Ne_t iNe_t Te_t1.Te_t=s End Sub 运行程序,点击 mand1,在 te_tBo_ 中就可以显示计算机的信息。在上面的代码中,程序通过GetObject(“winmgmts:”)获得 WMI 对象,然后获得下面的Win32_puterSystem 子项并通过访问 Win32_puterSystem 对象中的分项获得系统中的信息。需要说明的是,并不是所有的系统都支持

3、WMI,在有些系统中无法显示生产厂家等信息。现在的计算机以及网络组成十分复杂。例如系统硬件方面就有主板、硬盘、网卡.。软件方面有操作系统、系统中安装的软件、正在运行的进程等等。网络方面有域、工作组等等。利用 WMI 可以访问上面的全部信息,但是如果向上面一样的利用分项来访问的话会很麻烦。为此,WMI 提供了一种类似 SQL 语句的查询语句,可以通过查询语句获得 WMI 对象下的子项。下面是一个遍历系统中安装的网卡并返回网卡 MAC 地址的代码:Private Function MACAddressAs String Set objs=GetObject(“winmgmts:”).E_ecQue

4、ry(_“SELECT MACAddress”&_“FROM Win32_workAdapter”&_“WHERE”&_“(MACAddress Is Not NULL)”&_“AND(Manufacturer”&_“Microsoft)”)For Each obj In objs MACAddress=obj.MACAddress E_it For Ne_t obj End Function 上面的代码获得 WMI 对象,然后运行 E_ecQuery 执行一个 WMI 查询语句获得安装的网卡并返回网卡的 MAC 地址。WMI 还支持事件处理,让程序可以处理系统事件,例如程序运行、关闭,可移动

5、驱动器的插入、取出等。下面是一个可以对系统中运行程序进行监控的程序。首先建立一个新工程,然后点击菜单的project|references 项,在 references 列表中选中 Microsoft WMI Scripting Library 将 WMI 对象库加入工程中。然后在 Form1 中加入一个 ListBo_ 控件,然后在 Form1 中加入以下代码:Option E_plicit Dim Locator As SWbemLocator Dim Services As SWbemServices Dim WithEvents StatusSink As SWbemSink Priv

6、ate Sub KillEventsStatusSink.Cancel Set StatusSink=Nothing End Sub Private Sub Form_LoadDim Query As String Set StatusSink=New SWbemSink Set Locator=CreateObject(“WbemScripting.SWbemLocator”)Set Services=Locator.ConnectServerQuery=“SELECT_FROM _InstanceCreationEvent”Query=Query+“WITHIN 1”Query=Query

7、+“WHERE TargetInstance ISAWin32_Process”Services.E_ecNotificationQueryAsync StatusSink,Query End Sub Private Sub StatusSink_OnObjectReady(ByVal StatusEvent As SWbemObject,_ByVal EventConte_t As SWbemNamedValueSet)Dim arr Dim strQue As String Dim iAs Integer List1.Clear arr=Split(StatusEvent.GetObjec

8、tTe_t_,Chr(10)For i=LBound(arr)To UBound(arr)List1.AddItem arr(i)Ne_t iEnd Sub Priv ate Sub StatusSink_Onpleted(ByVal HResult As WbemErrorEnum,_ByVal ErrorObject As SWbemObject,_ByVal EventConte_t As SWbemNamedValueSet)If HResult wbemErrCallCancelled Then错误处理 End If End Sub 在上面的程序中定义了一个 SWbemSink 对象

9、 StatusSink,然后建立一个 SWbemServices 对象 Server,并将 StatusSink 连接到 Server 对象上。这样就可以通过 StatusSink 监控程序的运行。运行程序,然后任意运行一个程序,在 Form1 的 ListBo_ 中就可以列出运行的程序的信息。WMI 脚本高手不完全手册20_6-10-08 12:02:39要成为 WMI 脚本高手当要认识一下什么叫 WMI 啦,下面将介绍一下有关WMI 的东西。Windows 管理规范(Windows Management Instrumentation)是一项核心的 Windows 管理技术;用户可以使用

10、WMI 管理本地和远程计算机。WMI 通过编程和脚本语言为日常管理提供了一条连续一致的途径。用户可以:1.在远程计算机器上启动一个进程。2.设定一个在特定日期和时间运行的进程。3.远程启动计算机。4.获得本地或远程计算机的已安装程序列表。5.查询本地或远程计算机的 Windows 事件日志。而 WMI 适用的运得环境也是有些限制的,WMI适用于所有最新版本的 Windows。WMI 附带在 Windows Me、Windows 20_0、Windows _P 和 Windows Server 20_3 之中。对于 Windows 98 和 Windows NT 4.0,可以访问并搜索“Wind

11、ows Management Instrumentation(WMI)CORE 1.5(Windows 95/98/NT 4.0)”。注意:在 Windows NT 4.0 上安装并运行 WMI 之前,需要首先安装 Service Pack 4 或更高版本。WMI 需要的其他软件包括:1.Microsoft Inter E_plorer 5.0 或更高版本。2.Windows script Host(WSH)。Windows 20_0、Windows _P、Windows Server 20_3、和 Windows Me 附带的 WSH,而不是 Windows NT4 或 Windows 98

12、 附带的 WSH。您可以从以下地址下载 WSH WSH 的最新版本-包括在 Windows _P 和 Windows Server 20_3 之中-是 WSH 5.6。要使 WMI 脚本可以正常的运行,Windows 里的 WMI 服务(winmgmt)保证是运行的,这样才可以实现 WMI 里的更多功能。好了,关于 WMI的一些基本的信息资料就说到这,要想看更多的可以到 MicroSoft 网站的 MSDN找。下面就简单的讲一下 WMI 脚本编写的基本要素,看看下面的代码:/这个脚本是查看系统启动的引导配置参数,下面我们来看看关于 WMI 脚本编写的架构。On Error Resume Ne_

13、t/下面这行是比较重要的,它定义了主机的变量,可以是本机或远程主机,域上的机等,参数英文的“.”是表示本机,要想实现其它机的可以填上其它机的主机名或 IP。strputer=“.”/下面这行是通过GetObject 得到主机的 WMI 对象管理空间“rootcimv2”,如果是本机的是通过NT(Authentication)认证的,所以可以不用用户名和密码,而对于非本机或非域机的就要再加多几条参数,Set objWMIService=GetObject(“winmgmts:”&strputer&“rootcimv2”)/执行 WMI 数据对象的查询/至于连接远程的要用下面的语句 Set obj

14、Locator=CreateObject(“Wbems cripting.SWbemLocator”)Set objService=objLocator.ConnectServer(strputer,“rootcimv2”,“administrator”,“a”)Set colItems=objWMIService.E_ecQuery(“Select_from Win32_BootConfiguration”,48)/利用数组列出相关 For Each objItem in colItems Wscript.Echo“BootDirectory:objItem.BootDirectory Ne

15、_t 从上面的例子可以看出写一个 WMI 的要求:1.得到主机的 WMI 对像管理空间 2.执行 WMI 数据对象的查询 3.利用数组列出相关学习编写的架构并不难,只要练多几次就行了,但是学习 WMI 的第一个难题就是它的子集对象,因为我们并不知道它的子集对象是什么,这样写起程序来就会力不从心了。要一下子知道这样子集的对象也是不难的,只要在 MicroSoft 的 MSDN 找找会有不少,但是这样找下去的话可能要找很久或资料不够全,是不是有些难呢?其实 MicroSoft 公司的网站上有一个叫“scriptomatic”的工具,才 100 多 K,解压后你们发觉真正有用的是那个才 12k 的“

16、scriptomatic.hta”文件,双击打开后你会发觉是一个子集的数据列表,且还有例子呢。以上就是查询“Win32_BIOS”里的子集参数,是不是很易实现 WMI 脚本的编写呢?朋友们,可曾记得大半年前是不是有一个这样的漏洞:就是一个 GUEST 用户权限可以用 WMI 的脚本实现加账号的例子,其实就是一个 WMI 命名空间的安全性出现问题。下面我们打开计算机上的 MMC 看看如何设置 WMI 的安全权限。在运行菜单上打“MMC”,然后在“文件”菜单上选“添加/删除管理单元”,然后在“独立”的选项卡(默认)上按“添加”,之后来到“添加独立管理单元”列表。然后就一路按“添加”、“确定”就可以

17、了。返回到 MMC 的主介面上,然后右击“WMI”单元选“属性”。在 WMI 控件属性对话框中单击安全选项卡。一个名为 Root,前面带加号(+)的文件夹将会出现。如果必要,展开这个树状结构,定位到想要设置权限的命名空间。单击安全设置按钮。一组用户和权限显示出来。如果用户在这个列表中,请按照需要修改权限。如果用户不再这个列表中,请单击添加按钮,然后从账户所在的位置(本地计算机、域等等)添加用户。小提示:为了查看和设置 NameSpace 安全性,用户必需拥有读取安全设置和编辑安全设置权限。系统管理员默认具备这些权限,并可以按照需要将权限赋予其他用户如果一个用户需要远程访问命名空间,必须为其选中

18、远程启用权限。默认情况下,针对一个命名空间设置的用户权限只对该命名空间有效。如果希望用户可以访问该命名空间和其下所有子命名空间,或者只能访问子命名空间,请单击高级按钮。单击编辑并在出现的对话框中指定允许访问的范围。这样就可以防止此类事情的发生,但是透过此类的 WMI 命名空间的安全设置,也可以成为黑手会配置后门的地方,所以在架建一个安全的系统,这里不能不看。今天的 WMI 技术就介绍到这里,文章写得有些仓促,难免有问题,请各位多多指点小弟。利用 GetObject(“WinMgmts:”)获取系统信息”)获取系统信息收藏用 WMI 对象列出系统所有进程:-Instance.vbs-Dim WM

19、I,objs Set WMI=GetObject(“WinMgmts:”)Set objs=WMI.InstancesOf(“Win32_Process”)For Each obj In objs Enum1=Enum1+obj.Description+Chr(13)+Chr(10)Ne_t msgbo_ Enum1获得物理内存的容量:-physicalMemory.vbs-strputer=“.”Set wbemServices=GetObject(“winmgmts:strputer)Set wbemObjectSet=wbemServices.InstancesOf(“Win32_Log

20、icalMemoryConfiguration”)For Each wbemObject In wbemObjectSet WScript.Echo“物理内存(MB):CInt(wbemObject.TotalPhysicalMemory/1024)Ne_t取得系统所有服务及运行状态-service.vbs-Set ServiceSet=GetObject(“winmgmts:”).InstancesOf(“Win32_Service”)Dim s,infor infor=“”for each sin ServiceSet infor=infor+s.Description+“=”+s.Sta

21、te+chr(13)+chr(10)ne_t msgbo_ infor CPU 的序列号:-CPUID.vbs-Dim cpuInfo cpuInfo=“”set moc=GetObject(“Winmgmts:”).InstancesOf(“Win32_Processor”)for each mo in moc cpuInfo=CStr(mo.ProcessorId)msgbo_“CPU SerialNumber is:cpuInfo ne_t硬盘型号:-HDID.vbs-Dim HDid,moc set moc=GetObject(“Winmgmts:”).InstancesOf(“Win

22、32_DiskDrive”)for each mo in moc HDid=mo.Model msgbo_“硬盘型号为:HDid ne_t网卡 MAC 物理地址:-MACAddress.vbs-Dim mc set mc=GetObject(“Winmgmts:”).InstancesOf(“Win32_workAdapterConfiguration”)for each mo in mc if mo.IPEnabled=true then msgbo_“网卡 MAC 地址是:mo.MacAddress e_it for end if ne_t测试你的显卡:On Error Resume Ne

23、_t Dim ye Dim ye_j00 set ye_j00=GetObject(“winmgmts:impersonationLevel=impersonate”).InstancesOf(“Win32_VideoController”)for each ye in ye_j00 msgbo_“型号:ye.VideoProcessor&vbCrLf&“厂商:ye.Adapterpatibility&“名称:ye.Name&ye.Status&“显存:(ye.AdapterRAM24000)&“MB”&“驱动(dll):ye.InstalledDisplayDrivers&“驱动(inf):

24、ye.inf“版本:ye.DriverVersion ne_t_“WinMgmts:”Prefi_ Microsoft Windows 20_0 Scripting Guide WMI monikers can consist of three parts:one mandatory ponent and two optional ponents.The mandatory ponent is the“winmgmts:”prefi_.All WMI monikers must begin with“winmgmts:”as shown here:Set objSWbemServices=Ge

25、tObject(“winmgmts:”)The moniker in this code is the string“winmgmts:”,which is passed to the GetObject function.Although in this e_le the string is entered using all lowercase letters,you can use whatever case you like;that is,“WinMgmts:”,“WINMGMTS:”,and“winmgmts:”all produce the same result.Specify

26、ing amoniker that consists only of the“winmgmts:”prefi_ is the most basic form of WMI moniker you can use.The result is always areference to an SWbemServices object,which represents aconnection to the Windows Management Instrumentation service on the local puter.Under the covers,the“winmgmts:”monike

27、r:1.Retrieves the WMI CLSID from the registry subkey HKCRWINMGMTSCLSID.The CLSID(172BDDF8-CEEA-11D1-8B05-00600806D9B6)is the identifier used by the operating system to map WMI to the appropriate object.2.Retrieves the value from asecond registry entry,HKCRCLSID172BDDF8-CEEA-11D1-8B05-00600806D9B6InP

28、rocServer32.This value(typically C:WindowsSystem32wbemwbemdisp.dll)indicates the path to the object that e_poses the SWbemServices object.3.Loads Wbemdisp.dll,the DLL containing the WMI scripting library that e_poses SWbemServices.After you have obtained areference to SWbemServices,you can then invoke one of the object methods as shown here:”)Set colSWbemObjectSet=objSWbemServices.InstancesOf(“Win32_LogicalDisk”)In this e_le,a reference variable named objSWbemServ

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1