我正在寻找存储在 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