使用 python 子进程获取硬件 ID 时出错

Error with getting hardware id using python sub process

我目前在获取非常特定的 PC 的硬件 ID 时遇到错误,我一直在使用以下代码并且它已经在很多 PC 上运行但突然在 1 台 PC 上发生了以下错误

我使用的代码:

hardware_id = subprocess.check_output('wmic csproduct get uuid').decode().split('\n')[1].strip()

我正在使用 Pyinstaller 编译我的 python 文件,我在这台特定的 PC 上遇到以下错误:

csproduct - Alias not found
Traceback (most recent call last):
   ...
subprocess.CalledProcessError: Command 'wmic csproduct get uuid' returned returned non-zero exit status 44135
[8920] Failed to excute script app

如果有人告诉我为什么此特定 PC 会发生此错误以及我该如何修复它,我将不胜感激

我说的 PC 的 OS 是 Windows 10

首先注意到WMIC is deprecated。您最终会想要切换到 PS cmdlet。

调试它的下一步是通过调用 wmic csproduct get 而不将 UUID 指定为获得的关键。

您可能会发现 UUID 对 WMI 不可用。这很可能是因为您的 OS 您的客户正在使用 windows 的 hacked/modified/unlicensed 副本或修改后的 SMBIOS。可能还有其他解释,但这是最有可能的。纠正这不是你真正的能力范围内的事情。

如果您想进一步调查,可以使用 PS:

Get-WmiObject -Class Win32_ComputerSystemProduct | Select-Object -Property UUID

但是,您会发现 UUID 不存在(否则 wmic 会返回它)。