一、网络安全至关重要
没有网络安全就没有国家安全。
当下正值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无效。