使用VC在Windows2003下循环调用SELECT * FROM Win32_OperatingSystem查询远程主机信息。发现调用wmi查询的主机内存不断上涨(及Windows2003的系统主机),有内存泄漏现象。
但是相同的调用在Windows2000下则没有内存泄漏现象。跟踪代码后发现在循环中使用到IEnumWbemClassObject、IWbemClassObject这两个Wmi接口。个人怀疑是Windows2003存在系统漏洞或操作系统和wmisdk版本不一致所造成(我的wmisdk版本为1.50.1131.0)不知各位有碰到类似情况的吗,都发表一下意见吧!!!

解决方案 »

  1.   

    在XP下似乎也有类似的情况:
    ------------------------------------------------------------------------------------
    Microsoft Windows XP WMI服务的处理流程中存在漏洞,远程攻击者可能利用该漏洞执行拒绝服务攻击。如果用户使用了处理Windows管理规范(WMI)服务的程序的话,就会出现该漏洞。出现该漏洞时生成安全上下文的速度要高于清空缓存的速度,导致远程过程调用(RPC)缓存大量增加和内存泄漏,这样应用程序和操作系统变得没有响应,必须重启Windows XP工作站才能恢复正常状态。
    -------------------------------------------------------------------------------------摘自:启明星辰