Win10下通过WMIC获取内存配置和使用信息


基本原理,通过WMIC,获取memorychip和memphysical相关信息

 

例子1,使用MEMORYCHIP获取安装的memory信息,按bank区分

D:\>wmic MEMORYCHIP get Banklabel,DeviceLocator,MemoryType,TypeDetail,speed
BankLabel DeviceLocator MemoryType Speed TypeDetail
BANK 0 ChannelA-DIMM0 0 2133 128
BANK 2 ChannelB-DIMM0 0 2133 128

 

高级例子,讲上述过程写成PYTHON程序,并利用Python的字符处理能力格式化信息

代码如下:

import os
import ctypes

Drive = os.environ['SYSTEMDRIVE']
GetRamSlots = "wmic memphysical get memorydevices"
GetRamSoltCapacity = "wmic memphysical get MaxCapacity" 
GetUsedSolt = "wmic MEMORYCHIP get Banklabel,DeviceLocator,MemoryType,TypeDetail,speed"
GetFreeMemory = 'systeminfo | findstr /'+ Drive +'"Total Physical Memory" /'+Drive+'"Available Physical Memory"'


class disable_file_system_redirection:
    _disable = ctypes.windll.kernel32.Wow64DisableWow64FsRedirection
    _revert = ctypes.windll.kernel32.Wow64RevertWow64FsRedirection
    def __enter__(self):
        self.old_value = ctypes.c_long()
        self.success = self._disable(ctypes.byref(self.old_value))
    def __exit__(self, type, value, traceback):
        if self.success:
            self._revert(self.old_value)

with disable_file_system_redirection():
    Run_GetRamSlots = os.popen(GetRamSlots).read()
    Run_GetRamSoltCapacity = os.popen(GetRamSoltCapacity).read()
    Run_GetUsedSolt = os.popen(GetUsedSolt).read()
    Run_GetFreeMemory = os.popen(GetFreeMemory).read()
print("Getting RAM details.. \n")
for i in [i.strip() for i in Run_GetRamSlots.split('\n') if 'MemoryDevices' not in i if i.strip()]:
    print ("The Number of RAM slots available:"+i+"\n")

for i in [i.strip() for i in Run_GetRamSoltCapacity.split('\n') if 'MaxCapacity' not in i if i.strip()]:
    B = int(i)
    GB = 1024*1024.0
    Convert = B/GB
    print ("The capacity of each RAM per slot is:",Convert , "GB")
    print ("\n")
c = 0 
for i in [i.strip() for i in Run_GetUsedSolt.split('\n') if 'BankLabel' not in i if i.strip()]:
    c =c+1
print ("The number of used slot(s):", c)
print ("The details of the used slots:")
print (Run_GetUsedSolt)


print ("The installed RAM memory details:")
print (Run_GetFreeMemory)
print ("\n")

 

输出如下:

The Number of RAM slots available:4

The capacity of each RAM per slot is: 32.0 GB


The number of used slot(s): 2
The details of the used slots:
BankLabel  DeviceLocator   MemoryType  Speed  TypeDetail

BANK 0     ChannelA-DIMM0  0           2133   128

BANK 2     ChannelB-DIMM0  0           2133   128




The installed RAM memory details:
Total Physical Memory:     16,135 MB
Available Physical Memory: 5,961 MB

  

ref: https://scripts.comodo.com/frontend/web/topic/show-available-ram-sockets-on-the-motherboard

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM