【问题标题】:How to get harddrive serial number in C or asm without wmi如何在没有 wmi 的情况下在 C 或 asm 中获取硬盘序列号
【发布时间】:2013-02-11 08:44:45
【问题描述】:

如何在没有 wmi 的情况下在 C 或 asm 中获取硬盘序列号(不是每次重新安装 Windows 时更改的卷号)(因为 wmi 需要管理员权限)。任何线索都会有帮助,因为现在我在没有 wmi 的情况下在 C 的 web 上没有发现任何东西,在几天的搜索中......谢谢。 编辑:对于windows系统

【问题讨论】:

  • 我认为序列号很可能被认为是机密信息,所以没有管理员权限是无法获取的。
  • 如果没有特权指令,您很可能无法做到这一点。
  • @Harry : 由于这个原因,serial# 不再在 cpu 上,所以这就是为什么现在有一个变量,但硬盘驱动器也......?无论如何,即使 mac add 可以是假的,它仍然是一种可靠的识别计算机的方式,因此是非机密的。感谢不确定的信息:至少它的信息。 @Daniel:好的,谢谢
  • 在 Windows 中,您必须使用 DeviceIoControl 并使用 ATA 直通驱动器发出 IDENTIFY 命令。您需要管理员级别的访问权限
  • 因为 wmi 需要管理员权限 - 你确定吗?你试过了吗?从非管理员帐户执行wmic diskdrive get name, serialnumber 对我来说是正确的。以编程方式,您要查找的内容类似于 this,但打开这样的物理磁盘几乎肯定需要管理员权限。

标签: c windows assembly hardware-id


【解决方案1】:

请尝试我的开源工具 DiskId32,它的源代码位于 http://www.winsim.com/diskid32/diskid32.html 。我目前只有一个 Win32 版本。也许有一天我会添加一个Win64版本。

【讨论】:

  • 哇,谢谢:几乎解决了我的问题。但就像您在您的网站上所说的:“它在 Windows 9X、Win NT、Win 2K 和 Win XP (Pro/Home) 下运行。”并且“在 Windows XP、Windows 2003 Server 和 Vista 上偶尔会出现问题”......所以看起来很难获得这些高清信息:为您的程序喝彩!我猜将它移植到 w7 会很长/很难?现在 55% 的操作系统是 W7,所以...(对于我自己,我在 XP 抵抗运动中!;p)
【解决方案2】:

据我所知,硬盘驱动器序列号和有关硬盘驱动器的其他信息(如固件版本等)只能使用 SMART 获得,这需要块设备节点(/dev/sda 或 /dev/)的特殊 ioctls sdb),普通用户通常无法使用。

我知道有一个叫做 smartctl 的工具可以做到这一点:

sudo smartctl -i /dev/sda

也存在类似的工具(hdparm、lshw 等)。

就试图在不成为特权用户的情况下找出此信息而言,只有当它通过 /proc 或 /sys 公开时才有可能,我高度怀疑当前的 SATA 块设备驱动程序中是否正在执行此操作。

【讨论】:

  • 我现在在 windows$ 世界 (wmi) 中是 linux-dude,但无论如何谢谢。
  • 我不熟悉 WMI,在问题中明确提及 Windows 会更清楚地说明这一点 :)
猜你喜欢
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 2010-11-24
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
相关资源
最近更新 更多