【问题标题】:Why this code generates different numbers?为什么这段代码会生成不同的数字?
【发布时间】:2011-02-21 18:11:49
【问题描述】:

我有这个功能可以为硬盘和 CPU 组合创建一个唯一编号。

    GetVolumeInformation(drv, szNameBuffer, 256, &dwHddUnique, NULL, NULL, NULL, NULL);

    SYSTEM_INFO si;
    GetSystemInfo(&si);

    dwProcessorUnique = si.dwProcessorType + si.wProcessorArchitecture + si.wProcessorRevision;
    dwUniqueKey = dwProcessorUnique + dwHddUnique;

如果我格式化硬盘并安装新的 Windows,它会返回不同的数字。有什么想法,为什么?

谢谢。

编辑:

好的,知道了 (http://msdn.microsoft.com/en-us/library/aa364993(VS.85).aspx):

此函数返回音量 操作的序列号 系统分配硬盘何时 格式化。以编程方式获取 硬盘的序列号 制造商分配,使用 Windows 管理仪表 (WMI) Win32_PhysicalMedia 属性 序列号。

在网上发布我的问题之前,我应该做更多的研究。很抱歉打扰您,让我们把这个留在这里以防其他人需要它。

【问题讨论】:

  • 显然是因为dwProcessorUniquedwHddUnique 发生了变化。请不要发布超出您问题所需的代码。所以,请确定这两个更改中的哪一个,然后从上面的代码中删除另一个。

标签: hash cpu uniqueidentifier hard-drive


【解决方案1】:

也许是因为当您格式化硬盘时,它会为它生成一个新的唯一 UUID? (所以dwHddUnique 会有所不同)

【讨论】:

  • 嗯,差不多就是我说的:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 1970-01-01
  • 1970-01-01
  • 2016-02-08
  • 1970-01-01
相关资源
最近更新 更多