文章摘要
本文描述了一段Visual Basic代码,用于从Windows注册表(winmgmts映射)中提取服务信息。代码的主要步骤如下:
1. 初始化并获取所有Win32服务。
2. 处理文件路径,提取服务路径并获取相关信息。
3. 将服务名称和制造商信息写入文本文件“info.txt”。
4. 使用MsgBox显示完成信息。
代码展示了如何通过注册表进行服务信息的自动化提取和处理,适用于需要定期更新或管理服务的场景。
Set objWMIService=GetObject(“winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2”)
Set Services=objWMIService.ExecQuery(“Select * from Win32_Service”)
Set fso=CreateObject(“Scripting.FileSystemObject”)
Set objShell=CreateObject(“Shell.Application”)
Set objFolder=objShell.NameSpace(0)
i=0
Do
If objFolder.GetDetailsOf(“”, i)=”公司” Then ‘非中文系统自行修改
Exit Do
Else
i=i+1
End If
Loop
Set objWMIService=GetObject(“winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2”)
Set Services=objWMIService.ExecQuery(“Select * from Win32_Service”)
Set fso=CreateObject(“Scripting.FileSystemObject”)
Set objShell=CreateObject(“Shell.Application”)
Set objFolder=objShell.NameSpace(0)
i=0
Do
If objFolder.GetDetailsOf(“”, i)=”公司” Then ‘非中文系统自行修改
Exit Do
Else
i=i+1
End If
Loop
For Each objService in Services
path=GetPath(objService.PathName)
IF fso.GetExtensionName(path)=”” Then path=path & “.exe”
Set objFolder=objShell.NameSpace(fso.GetParentFolderName(path))
Set objItem=objFolder.ParseName(fso.GetFileName(path))
comp=objFolder.GetDetailsOf(objItem, i)
If comp=”” Then comp=”未知”
info=info & “服务:”& objService.DisplayName &” 制造商:”& comp & vbCrLF
Next
fso.CreateTextFile(“info.txt”, true).WriteLine info
MsgBox “完成”
Function GetPath(strng)
Dim re
Set re=New RegExp
re.Pattern=”^””?(.+\\[^\\\s””]+).*”
GetPath=re.Replace(strng,”$1″)
Set regEx=Nothing
End Function
© 版权声明
文章版权归作者所有,未经允许请勿转载。