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

问题描述

我目前在获取非常特定的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操作系统是Windows 10

解决方法

首先注意WMIC is deprecated。您最终将希望切换到PS cmdlet。

下一步的调试工作是,通过调用wmic csproduct而不用指定UUID作为获取密钥,来查看wmic csproduct get中有什么 。 / p>

您可能会发现UUID对WMI不可用。这很可能是因为您的客户(不受您控制的操作系统)正在使用被黑客入侵/已修改/未经许可的Windows副本或已修改的SMBIOS。可能还有其他解释,但这是最有可能的。纠正这些并不是您真正需要的。

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

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

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