基于WMI更新Windows系统信息采集程序sysInfo的一些收获

简介: 基于WMI更新Windows系统信息采集程序sysInfo的一些收获

一、网络安全至关重要

没有网络安全就没有国家安全。

当下正值2023年国家网络安全宣传周(9月11日至17日)在全国范围举行,而第20届中国—东盟博览会也在9月16日至19日在广西南宁举行,网络安全检测和保障至关重要。

二、编写sysInfo的目的

单位电脑比较多,电脑专业技术人员少,逐台上机检测花费时间多,效率又低,比较理想的方法 是编写一个系统信息采集程序,发给单位员工在自己的电脑上运行,并把采集的信息文件发回来。所以,不管是以前写的pe_xscan,还是如今写的sysInfo,都是为了收集使用Windows系统的电脑信息,进而分析电脑系统是否安全。

三、WMI简介

最近断断续续在更新sysInfo,主要是通过wmi来进行。

Windows Management Instrumentation (WMI) 是 Microsoft 对基于 Web 的企业管理 (WBEM) 的实现,WBEM 是一项业界倡议,用于为访问企业环境中的管理信息开发一项标准技术。 WMI 使用通用信息模型 (CIM) 行业标准来表示系统、应用程序、网络、设备和其他托管组件。 CIM 由分布式管理任务组 (DMTF) 开发和维护。

从Windows 2000开始,直到最新的Windows 11,WMI一直内置于Windows操作系统中,并且成为了Windows系统管理的重要组成部分。通过WMI,不仅可以获取想要的计算机数据,而且还可以用于远程操作。

因而,在sysInfo中尽量使用wmi获取信息,这样可以避免直接调用 API函数时可能遇到的Windows 版本的差异。

四、WMI的不足

但在实际编写代码过程中,还是感到 WMI存在一些不如意的地方:

(一)WMI提供的命名空间因Windows版本而异

比如通过安全中心(root/Security/Center)可以获取系统中安装的杀毒软件信息,但安全中心是从Windows XP SP2 的WMI开始提供的,对于Windows XP SP2 之前的Windows系统,获取系统中安装的杀毒软件信息需要通过其它的渠道。

(二)WMI提供的信息内容因Windows版本而异

比如对于Win32_Product的信息类:

[Provider("MSIProv"), Dynamic]
class Win32_Product : CIM_Product
{
  uint16   AssignmentType;
  string   Caption;
  string   Description;
  string   IdentifyingNumber;
  string   InstallDate;
  datetime InstallDate2;
  string   InstallLocation;
  sint16   InstallState;
  string   HelpLink;
  string   HelpTelephone;
  string   InstallSource;
  string   Language;
  string   LocalPackage;
  string   Name;
  string   PackageCache;
  string   PackageCode;
  string   PackageName;
  string   ProductID;
  string   RegOwner;
  string   RegCompany;
  string   SKUNumber;
  string   Transforms;
  string   URLInfoAbout;
  string   URLUpdateInfo;
  string   Vendor;
  uint32   WordCount;
  string   Version;
};

其中有些成员只对某些Windows版本有意义。比如AssignmentType、HelpLink、InstallSource等,对于Windows 2003无效。

相关文章
|
18天前
|
人工智能 监控 安全
掌握Windows管理利器:WMI命令实战
本文介绍了Windows Management Instrumentation (WMI) 的基本概念和用途,通过多个实用的`wmic`命令示例,如获取CPU信息、查看操作系统详情、管理服务、检查磁盘空间等,展示了WMI在系统维护中的强大功能。适合IT专业人士学习和参考。
|
2月前
|
JavaScript 前端开发 API
MASM32编程通过WMI获取Windows计划任务
MASM32编程通过WMI获取Windows计划任务
|
2月前
|
Windows Python
python获取windows机子上运行的程序名称
python获取windows机子上运行的程序名称
|
30天前
|
C# 开发工具 Windows
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
39 0
|
1月前
|
安全 API C#
C# 如何让程序后台进程不被Windows任务管理器强制结束
C# 如何让程序后台进程不被Windows任务管理器强制结束
58 0
|
2月前
|
小程序 Windows
MASM32编写的程序在Windows 7,10下运行正常,但在Win XP下运行时只闻其声不见其形的故障
MASM32编写的程序在Windows 7,10下运行正常,但在Win XP下运行时只闻其声不见其形的故障
|
3月前
|
JavaScript Windows
electron程序运行在某些 windows 上白屏
electron程序运行在某些 windows 上白屏
|
3月前
|
编解码 开发工具 数据安全/隐私保护
如何快速实现Windows平台屏幕摄像头采集并推送RTMP|轻量级RTSP服务能力?
一个好的推送模块,除了实现高效率的编码传输外,还要有好的音视频采集机制和灵活的架构支持,便于后期功能扩展,比如实时快照、预览、实时录像等。除此之外,还要有好的交互机制(比如envent callback)、低延迟和长期运行稳定的性能。
|
3月前
|
Linux Windows Python
最新 Windows\Linux 后台运行程序注解
本文介绍了在Windows和Linux系统后台运行程序的方法,包括Linux系统中使用nohup命令和ps命令查看进程,以及Windows系统中通过编写bat文件和使用PowerShell启动隐藏窗口的程序,确保即使退出命令行界面程序也继续在后台运行。
|
6月前
|
Windows
LabVIEW启用/禁用Windows屏幕保护程序
LabVIEW启用/禁用Windows屏幕保护程序
68 4
LabVIEW启用/禁用Windows屏幕保护程序