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

Ahm*_*led 2 python subprocess runtime-error python-3.x wmic

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

我正在使用的代码:

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

我正在使用 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
Run Code Online (Sandbox Code Playgroud)

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

我所说的 PC 操作系统是 Windows 10

ker*_*baz 5

首先请注意,WMIC 已被弃用。您最终会想要切换到 PS cmdlet。

调试此问题的下一步是查看通过调用而不指定 UUID 作为要获取的密钥可以获取什么(如果有的话)。wmic csproductwmic csproduct get

您可能会发现 UUID 对 WMI 不可用。这很可能是因为您的客户使用您无法控制的操作系统,而使用的是经过黑客攻击/修改/未经许可的 Windows 副本或修改过的 SMBIOS。可能还有其他解释,但这是最有可能的。纠正这个问题确实不是你力所能及的事情。

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

Get-WmiObject -Class Win32_ComputerSystemProduct | Select-Object -Property UUID
Run Code Online (Sandbox Code Playgroud)

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