【问题标题】:Getting computer serial number with python and .bat file使用 python 和 .bat 文件获取计算机序列号
【发布时间】:2017-07-08 13:47:46
【问题描述】:

我最近一直在学习考试,我正在阅读的教科书告诉我,获取计算机序列号的命令(在 CMD 中)如下 - (作为降低盗版的一种方法)。

wmic bios get serialnumber

我决定使用 python 自己尝试一下,我想在其中获取我自己计算机的序列号,我创建了一个批处理文件 (.bat) 并将序列号记录到我认为可以的 txt 文件中在 python 中读取,如果有的话,这会产生更多问题......这是我目前拥有的代码:

SerialNumber.bat(顺便说一下 bat 文件的新手)

SET num=wmic bios get serialnumber

%num% > serial.txt

serial.txt 的样子(稍作修改以不泄露我的序列号)

Readtxt.py

# Trying to read in two different ways
with open("serial.txt", "r") as file:
    print(file.read())

lines = []
for line in open("serial.txt"):
    lines.append(line)
print(lines)

哪个输出:(不再显示完整图像)

问题是:

  1. 如何将序列号存储为字符串?
  2. 为什么我用来读取的每种不同方法提供不同的输出?

感谢您的任何回答:)

【问题讨论】:

  • 看起来像 unicode.... 您可能需要对其进行解码。尝试使用“rb”而不是“r”进行阅读,并在末尾添加.decode()...

标签: python batch-file serial-number


【解决方案1】:

当重定向到文件时,wmic 使用 BOM 写入 UTF-16-LE

> wmic bios get serialnumber >serial.txt

> hex.exe serial.txt
HEX:       +00 01 02 03 04 05 06 07  08 09 0a 0b 0c 0d 0e 0f  0123456789abcdef
0000000000: FF FE 53 00 65 00 72 00  69 00 61 00 6C 00 4E 00  .■S.e.r.i.a.l.N.
0000000010: 75 00 6D 00 62 00 65 00  72 00 20 00 20 00 0D 00  u.m.b.e.r. . ...

> type readtext.py
with open("serial.txt", 'rb') as file:
    print(file.read().decode('utf-16'))

> py readtext.py
SerialNumber
5xxxxyyyy

【讨论】:

    猜你喜欢
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    • 2017-12-16
    • 1970-01-01
    • 2021-06-12
    • 2013-10-31
    • 2012-06-15
    相关资源
    最近更新 更多