V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
arrowna
V2EX  ›  Windows

如何获取硬盘的序列号?

  •  
  •   arrowna · 2016-05-28 08:21:01 +08:00 · 4891 次点击
    这是一个创建于 2883 天前的主题,其中的信息可能已经有所发展或是发生改变。
    wmic 获取到到是一串数字,不是序列号,怎么办?

    D:\>wmic diskdrive get serialnumber
    SerialNumber
    2020202057202d444d573443304d3146394c4a4e

    真正的序列号应该像下面一样 ( HDTune 可以正确读取硬盘序列号)
    Drive Serial Number: WD-WMC4M0F1L9NJ

    为何 wmic 读到的是数字呢。。。
    15 条回复    2016-05-28 19:59:37 +08:00
    janxin
        1
    janxin  
       2016-05-28 08:27:16 +08:00
    不明白是什么需求,你用 VC 写个程序不也能取得到吗?
    arrowna
        2
    arrowna  
    OP
       2016-05-28 08:33:10 +08:00
    @janxin 用 vc 调用 wmic 命令获取到的是数字啊。。。
    ghostxdy
        3
    ghostxdy  
       2016-05-28 09:16:39 +08:00 via Android
    将 wmic 得到的 hex 转 ascii ,我粗粗的看了一下是对应下面的 ascii
    lycon
        4
    lycon  
       2016-05-28 09:20:25 +08:00
    看排列取到的更像操作系统分配给硬件 GUID
    xia0chun
        5
    xia0chun  
       2016-05-28 09:34:04 +08:00
    我的可以直接获取到 ascii 码,系统是 Win7 X64

    C:\>wmic diskdrive get serialnumber
    SerialNumber
    W -DXW196C307625
    adadada
        6
    adadada  
       2016-05-28 09:34:59 +08:00
    wmic 得到的序列号按 2 字节转换成 little endian 之后正好是 WD-WMC4M0F1L9NJ 前面补 5 个空格的 ASCII 编码。补空格应该是为了满足对齐或者固定长度的要求。
    lslqtz
        7
    lslqtz  
       2016-05-28 10:10:43 +08:00
    Microsoft Windows [版本 10.0.10586]
    (c) 2015 Microsoft Corporation 。保留所有权利。

    C:\Users\lslqtz>wmic diskdrive get serialnumber
    SerialNumber
    P02512123538
    WD-WMAYU5712559
    lslqtz
        8
    lslqtz  
       2016-05-28 10:14:00 +08:00
    把取到的做个判断 开头是不是 WD ,如果不是去掉空格对比是不是 WD & W-D ,如果都不是转换一下再对比。
    winterbells
        9
    winterbells  
       2016-05-28 10:35:02 +08:00
    以前央视有一个司法节目的一集叫什么门外汉与???的,就是最后通过硬盘序列号来定罪的乁(๑˙ω˙๑乁)
    loading
        10
    loading  
       2016-05-28 12:25:32 +08:00 via Android
    @winterbells 看一下<黑客军团>,你需要电转和微波炉!
    ahhui
        11
    ahhui  
       2016-05-28 12:54:22 +08:00
    使用 DeviceIoControl 查询 STORAGE_DEVICE_DESCRIPTOR 结构体。
    arrowna
        12
    arrowna  
    OP
       2016-05-28 14:18:02 +08:00
    @adadada 好像不是 little edian ? 每 4 个 16 进制字符 little edian 一下,不是整体 little edian 呢:(
    DesignerSkyline
        13
    DesignerSkyline  
       2016-05-28 14:28:35 +08:00 via iPad
    @loading 罪恶黑名单第三季也有这个情节
    adadada
        14
    adadada  
       2016-05-28 14:49:22 +08:00
    @arrowna 可能我没表达清楚:我说的 “按 2 字节转换成 little endian ” 就是你的说的 "每 4 个 16 进制字符 little edian 一下" 的意思
    arrowna
        15
    arrowna  
    OP
       2016-05-28 19:59:37 +08:00
    @adadada 为何不是按所有字节的 little endian 呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2859 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 14:10 · PVG 22:10 · LAX 07:10 · JFK 10:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.