我试着获取宏基显示器的序列号,看着windows注册表。 我解析注册表与此代码在Python 3:宏基显示器序列号
import winreg
from winreg import HKEY_LOCAL_MACHINE
subKey = "SYSTEM\CurrentControlSet\Enum\DISPLAY"
k = winreg.OpenKey(HKEY_LOCAL_MACHINE, subKey)
with winreg.OpenKey(HKEY_LOCAL_MACHINE, subKey) as k:
""""
Open the key 'HKLM\SYSTEM\CurrentControlSet\Enum\DISPLAY'
to get the info of all connected monitors
"""
i = 0
while True:
try:
with winreg.OpenKey(k, winreg.EnumKey(k, i)) as sk:
j = 0
while True:
try:
with winreg.OpenKey(sk, winreg.EnumKey(sk, j)) as ssk:
l = 0
while True:
try:
if (winreg.EnumKey(ssk, l) == "Control"):
try:
with winreg.OpenKey(ssk, "Device Parameters") as sssk:
strEDID = str(winreg.EnumValue(sssk, 0)[1])
try:
modelo = strEDID[strEDID.index("\\x00\\x00\\x00\\xfc") + len("\\x00\\x00\\x00\\xfc\\x00"):].split("\\")[0]
serie = strEDID[strEDID.index("\\x00\\x00\\x00\\xff") + len("\\x00\\x00\\x00\\xff\\x00"):].split("\\")[0]
except:
modelo = "Not Found"
serie = "Not Found"
print ("Modelo:", modelo)
print ("Serie:", serie, "\n")
fo = open("salTest.txt", "a")
fo.write(modelo + "\n")
fo.write(serie + "\n\n")
fo.close()
except OSError:
print ("Error")
break
else:
l += 1
except OSError:
break
j += 1
except OSError:
break
i += 1
except OSError:
break
至于结果我得到的cmd窗口的输出是这样的:
Modelo: AL1716
Serie: L4802017396L
的问题是,“意甲” ISN真正的序列号(一个Acer显示器序列号有22个字符,看起来像“ETL480201781700F4B396L”)
有一种方法可以用“Serie”和SNID来构建真正的序列号以识别显示器。
这里是二宏基显示器的一个例子:
S/N ORIGINAL: ETL48020178170 (0F4B)396L | # ETL480201781700F4B396L
------------------------------------------------------------------------------------
SNID: 8170 (0F4B)=03915 | 39 # 81700391539
S/N FROM SCRIPT: L4802017 396L | # L4802017396L
S/N ORIGINAL: ETL48020178170 (2C98)396L | # ETL480201781702C98396L
------------------------------------------------------------------------------------
SNID: 8170 (2C98)=11416 | 39 # 81701141639
S/N FROM SCRIPT: L4802017 396L | # L4802017396L
任何人知道如何得到这个信息?
谢谢!
为什么不直接看显示器的背面?我不知道Windows会导入每一块硬件的序列号(假设它甚至可以访问并且有效)并将其存储在注册表中。虽然Windows可以做很多事情也可以这么说,但我猜... – twalberg
@twalberg - 我怀疑OP是作为企业的IT部门工作的。企业喜欢通过管理脚本跟踪尽可能多的硬件。 – selbie
正如@selbie所说,我需要通过网络从许多计算机收集硬件信息......宏基显示器的这个问题是我现在唯一的问题。谢谢。 –