Skip to content

Commit 2f978c3

Browse files
committed
CM-67459-use-pywin-instead-of-wmi
1 parent 88c09a8 commit 2f978c3

2 files changed

Lines changed: 11 additions & 8 deletions

File tree

cycode/cli/utils/host_info.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,15 @@ def _get_macos_serial_number() -> Optional[str]:
113113

114114

115115
def _get_windows_serial_number() -> Optional[str]:
116-
import wmi # Windows-only dependency; imported lazily so other platforms never load it
116+
import pythoncom # from pywin32
117+
import win32com.client # from pywin32
117118

118-
bios_entries = wmi.WMI().Win32_BIOS()
119-
if not bios_entries:
120-
return None
121-
serial = bios_entries[0].SerialNumber
122-
return serial.strip() if serial else None
119+
pythoncom.CoInitialize()
120+
try:
121+
wmi_service = win32com.client.GetObject('winmgmts:')
122+
for bios in wmi_service.InstancesOf('Win32_BIOS'):
123+
serial = bios.SerialNumber
124+
return serial.strip() if serial else None
125+
finally:
126+
pythoncom.CoUninitialize()
127+
return None

pyproject.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@ pathvalidate = ">=3.3.1,<4.0.0"
5252
tomli-w = ">=1.0.0,<2.0.0"
5353
tomli = {version = ">=2.0.0,<3.0.0", python = "<3.11"}
5454
anyio = ">=4.0.0, <4.13.0"
55-
wmi = { version = "^1.5.1", markers = "sys_platform == 'win32'" }
56-
pywin32 = { version = "^308", markers = "sys_platform == 'win32'" }
5755

5856
[tool.poetry.group.test.dependencies]
5957
mock = ">=4.0.3,<4.1.0"

0 commit comments

Comments
 (0)