C++ 用C+;为当前机器生成GUID的简单方法是什么+;?

C++ 用C+;为当前机器生成GUID的简单方法是什么+;?,c++,g++,guid,uniqueidentifier,C++,G++,Guid,Uniqueidentifier,我目前正在开发一款第一人称射击游戏 我想知道是否有一种方法可以生成一个GUID,该GUID将始终为同一台机器返回相同的值,但在另一台机器上会不同 我需要做这一代来有效地禁止麻烦用户 我希望它同时使用微软Visual C++和G++。 < P>你可以使用MAC地址。< /P> 下面介绍了一种方法。我会支持对MAC地址的投票,因为每个MAC地址在制造时都是唯一的,但随后会出现欺骗问题。我建议您以多个值为基础,例如卷序列号、CPU型号/步进、MAC地址和磁盘制造商。这取决于您,但请尽量避免只依赖单个值

我目前正在开发一款第一人称射击游戏

我想知道是否有一种方法可以生成一个GUID,该GUID将始终为同一台机器返回相同的值,但在另一台机器上会不同

我需要做这一代来有效地禁止麻烦用户


<>我希望它同时使用微软Visual C++和G++。

< P>你可以使用MAC地址。< /P>
下面介绍了一种方法。

我会支持对MAC地址的投票,因为每个MAC地址在制造时都是唯一的,但随后会出现欺骗问题。我建议您以多个值为基础,例如卷序列号、CPU型号/步进、MAC地址和磁盘制造商。这取决于您,但请尽量避免只依赖单个值,因为这可能总是会发生变化,但如果您的任何标识因素发生变化,GUID也会发生变化,因此您需要在计算机之间选择某种持久值。像产品密钥或产品id之类的东西可能是更好的选择,但我不确定这是否容易访问。

您可以在
HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Cryptography
注册表项中读取MachineGuid密钥


这可以在Windows上运行,但您需要其他操作系统的替代方法。

HKEY_CLASSES_ROOT中也有TMID。仅限Windows。

根据定义,这不是GUID吗?不要从假定GUID是答案开始(事实并非如此,尽管早期的实现编码了您可能提取的唯一机器信息,但出于隐私原因,这些生成方法通常被废弃)。开始搜索如何唯一地识别一台机器:没有万无一失的方法。这些天你可以欺骗任何东西。@Victor:看,我知道没有什么万无一失的方法可以做到这一点。但是懒惰的人可能不知道如何欺骗它。现在很多电脑都有多种MAC:以太网、WiFi、蓝牙,可能还有VPN。这实际上是一个很好的观点,但我们不能总是依赖它。如果有多个MAC,也更容易欺骗,但如果我们同时依赖MAC,并且有人更改了他们的网卡,则您的GUID无效。