CWMI
This project is a lightweight wrapper for interacting with WMI using python/ctypes
Install / Use
/learn @fireeye/CWMIREADME
cWMI
This project is a lightweight wrapper for interacting with WMI using python/ctypes without any external dependencies. It allows a lower level of interaction with WMI, but requires a greater knowledge of WMI internals. There are several helpers included that will come in handy for those who don't need to do anything low level, or just want a quick start.
This project was not intended to be a replacement for the existing (and very good) wmi module, but as a pure python alternative without additional dependencies.
Usage
To use this module import cwmi and either use the helper functions, or the WMI APIs directly.
Easy way, using helper functions.
import cwmi
def list_processes():
processes = cwmi.query('root\\cimv2', 'SELECT * FROM Win32_Process')
print('NAME\t\tPROCESS ID')
print('=' * 80)
for process, values in processes.items():
print('{:s}\t\t{:d}'.format(values['Name'], values['ProcessId']))
Not as easy way, directly interacting with WMI APIs.
import cwmi
def list_processes():
with cwmi.WMI('root\\cimv2') as svc:
with svc.ExecQuery('WQL', 'SELECT * FROM Win32_Process', 0, None) as enum:
print('NAME\t\tPROCESS ID')
while True:
try:
with enum.Next(cwmi.WBEM_INFINITE) as obj:
obj.BeginEnumeration(0)
proc_data = {}
while True:
try:
prop_name, var, _, _ = obj.Next(0)
proc_data[prop_name] = cwmi.V_TO_TYPE(var)
except WindowsError:
break
obj.EndEnumeration()
print('{:s}\t\t{:d}'.format(proc_data['Name'],
proc_data['ProcessId']))
except WindowsError:
break
For more examples see examples.
Microsoft's WMI documentation will be helpful if directly interacting with the APIs.
Some things to note are that while the documentation specifies input pointer parameters to some methods, this will not be necessary when using the wrapper APIs. The wrappers also handle python str to BSTR conversion and resource management.
Related Skills
node-connect
339.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
339.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.9kCommit, push, and open a PR
