寻找唯一的 GUID 来识别 Windows 安装

寻找唯一的 GUID 来识别 Windows 安装

我正在寻找存储在 Windows 注册表中的唯一 GUID,以帮助我识别 Windows 安装或 PC。

GUID 必须;

  • 永远存在
  • 对于特定的 Windows 安装是唯一的,即没有其他计算机具有相同的 ID
  • 从不改变

非常感谢

答案1

您可以从 Windows 注册表中获取 GUID,例如:

var regpath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography\\MachineGuid";
var oWSS = new ActiveXObject("WScript.Shell");
clientGUID = oWSS.RegRead(regpath);

答案2

如果安装的驱动器移动到另一个系统,您是否希望这个数字发生变化或保持不变?

如果使用 ghost 或其他程序克隆安装,您是否希望更改此数字?您是否可以依赖克隆的系统始终按照 Microsoft 的建议进行系统准备?如果您可以确保您的安装永远不会被克隆,则 SID 应该没问题。

在多重启动系统的情况下(即系统安装了 Windows 7 和 Windows XP),您是否需要将这两个安装标识为唯一的、相关的还是其他?

为什么你需要将它作为 Windows 安装的一部分,而不是硬件提供的东西,也许是处理器序列号

我假设您询问的是用于库存目的的某种脚本或工具?

为什么不在第一次运行该工具时直接生成自己的编号并将其保存在 LOCAL_MACHINE 注册表配置单元中呢?也许甚至可以使用 RFC4122 类型 1 编号,其中应包括其中一个网络接口的硬件地址。这样,您就可以通过将 UUID 与当前网络适配器进行比较来检查 UUID 是否仍属于该系统。

答案3

您想使用 Windows 产品 ID。这是一个唯一编号,部分来自安装的产品密钥(散列),部分来自硬件配置,包括处理器序列号和第一个 NIC 的 MAC 地址。您可以在此处阅读有关它的信息(有些过时,但仍然有效)TechNet 文章。产品 ID 可以在系统信息屏幕上找到,或通过多种方法以编程方式找到。

系统信息

答案4

我不太确定您描述的 GUID 值是否真的存在。一种常见的做法是使用 CPU 或主板 ID 信息。

以下是包含一些相关 WMI 脚本代码的论坛帖子链接: http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework/topic59274.aspx

相关内容