首页 / 知识
关于Windows:生成唯一的机器ID
2023-04-17 14:09:00

Generating a unique machine id我需要编写一个函数,该函数生成的ID对于运行Windows OS的给定计算机是唯一的。
当前,我正在使用WMI查询各种硬件参数,并将它们连接在一起并对其进行哈希处理以得出唯一的ID。 我的问题是,我应该使用哪些建议的参数? 但是,我遇到了一个问题,即双重引导进入2个不同Windows操作系统的计算机在每个OS上生成不同的站点代码,理想情况下不会发生这种情况。 作为参考,这些是我当前正在使用的指标:
我遇到了同样的问题,经过一番研究,我决定最好的方法是按照@Agnus的建议读取注册表项 当然,任何人都可以轻松更改注册表项以伪造计算机GUID,但是我发现这会破坏Windows如此众多组件的正常运行,在大多数情况下,没有普通用户会这样做(再次,当心适用于顽固的黑客)。 使用我们的许可工具,我们考虑以下组件
但是,我们不仅创建哈希表并创建通过/失败系统,还创建了可比较的指纹,该指纹可用于确定两个计算机配置文件的差异。如果差异等级高于指定的公差,则要求用户再次激活。 我们发现,在过去的8年中,数十万个最终用户安装使用了该组合,可以很好地提供可靠的唯一计算机ID,甚至适用于虚拟机和克隆的OS安装。 自己解析SMBIOS并将其散列为任意长度。有关所有可用的SMBIOS结构,请参见PDF规范。
要从Windows查询SMBIOS信息,可以使用 IIRC,P3及更高版本不推荐使用CPUID指令中的"唯一ID"。 仅使用处理器的UniqueID怎么办? 我讨厌成为一个说"你做错了"的人(我一直讨厌那个人;)但是... 是否必须为唯一的机器重复生成?您能分配标识符还是做一个公钥/私钥?也许如果您可以生成并存储该值,则可以从同一磁盘上的两个OS安装中访问它? 您可能已经探索了这些选项,但它们对您不起作用,但是如果没有,则需要考虑一些问题。 如果不是用户信任的问题,则可以使用MAC地址。 有一个可用于获取硬件特定信息的库:硬件序列号提取器(CPU,RAM,HDD,BIOS) 对于我的一个应用程序,我可以使用计算机名称(如果它是非域计算机),或者使用域计算机的域计算机帐户SID。马克·鲁西诺维奇(Mark Russinovich)在此博客文章Machine SID中谈到了这一点:
您可以通过LDAP或 在我的程序中,我首先检查终端服务器并使用WTSClientHardwareId。否则,本地PC的MAC地址就足够了。
如果您确实要使用提供的属性列表,请忽略诸如 您应该考虑使用网卡上的MAC地址(如果存在)。这些通常是唯一的,但可以制造。我已经使用了根据您的网络适配器MAC地址生成许可证文件的软件,因此这被认为是区分计算机的可靠方法。 我还有一个额外的约束,我使用的是.net express,因此无法使用标准的硬件查询机制。因此,我决定使用Power Shell进行查询。完整的代码如下所示:
您可以拉出某种制造商的序列号或服务标签吗? 我们的商店是戴尔的商店,因此我们使用每台机器唯一的服务标签来识别它们。我知道至少在Linux中可以从BIOS中查询到它,但是我不知道如何在Windows中立即使用它。 也许有些作弊,但是如今,如果不更改主板,机器以太网适配器的MAC地址很少更改。 为什么不使用网卡的MAC地址? 试试这个,它会提供一个唯一的硬盘ID:Delphi 7-2010的DiskId32端口。 查找CPUID中的一个选项。多CPU系统可能存在一些问题。 |
最新内容
相关内容
gitlab中如何查询自己的用户名和密
gitlab中如何查询自己的用户名和密码?,密码,系统,邮箱,地址,技术,数字,页面,用户名,链接,账户,1.访问GitLab登录页面首先,打开您的Web浏览器并linux引用命令并运行?
linux引用命令并运行?,工具,代码,管理,环境,产品,项目,系统,软件,命令,脚本,怎么在linux中调用命令行中的命令,比如我想在一个程序中用命令行查询linux主机名命令?
查询linux主机名命令?,系统,地址,工作,信息,网络,图片,名称,命令,电脑,标准,linux常用的命令有哪些linux系统常用操作命令如下:ls:全拼list,功能linux运行图形界命令?
linux运行图形界命令?,系统,密码,地址,电脑,图形界面,地方,工具,界面,终端,图形,linux图形化界面命令第一种方式比较简单,只需要选择相应的带图linux怎样运行命令?
linux怎样运行命令?,系统,工作,信息,基础,地址,命令,目录,工具,密码,一致,Linux系统基础操作指令1、linux常用命令有pwd命令、cd命令、ls命令linux编译完运行命令?
linux编译完运行命令?,系统,代码,环境,工具,信息,命令,文件,程序,终端,编辑,在linux中编译C输入完程序后输入个:wq然后按什么键就然后就回到了linux命令程序运行?
linux命令程序运行?,状态,系统,服务,情况,命令,进程,软件,数据,发行,时间,Linux中如何启动进程?进程调度命令有哪些?实现调度启动进程的方法有输入linux命令行参数?
输入linux命令行参数?,工作,系统,地址,数据,流程,电脑,信息,命令,工具,管理,linux常用命令有哪些linux系统常用操作命令linux系统常用操作命令linux运行脚本命令?
linux运行脚本命令?,系统,代码,服务,文件,工具,平台,网站,脚本,命令,方法,Linux配置开机自启动执行脚本有哪些方法方法1:执行ntsysv命令,然后在linux命令后加运行?
linux命令后加运行?,状态,暂停,工具,单位,进程,环境,网络,系统,权威,第一,mv什么意思呢?1、MV就是音乐短片(Music Video),是指与音乐(通常大部分是ssh运行linux命令?
ssh运行linux命令?,地址,服务,系统,软件,工具,电脑,网络,密码,名称,命令,在linux命令中登陆ssh服务的命令是?步骤如下:查询\安装SSH服务 (1)登陆linux查询url命令?
linux查询url命令?,系统,网址,工具,数据,网站,命令,传播,软件,地址,标准,linux在命令符界面如何浏览网页linux系统下命令行访问网页是curl命令