计算机的GUID号怎么查看

计算机的GUID号怎么查看,第1张

在HKEY_CLASSES_ROOT\CLSID\注册表中查看。

GUID

(全球唯一标识符)

全局唯一标识符(GUID,GloballyUniqueIdentifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。

GUID的总数达到了2^128(34×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。

GUID一词有时也专指微软对UUID标准的实现。

在Windows平台上,GUID广泛应用于微软的产品中,用于标识如注册表项、类及接口标识、数据库、系统目录等对象。

电脑中的GUID可以在注册表中找到,具体方法如下:

1,点击开始,运行,输入:regedit,然后点击确定。

2,在注册表中依次展开HKEY_CLASSES_ROOT\CLSID\,在CLSID的下面就可以看到很多的GUID文件夹,这些ID对应的都是系统里面所有不同的程序,文件,系统组件等。

GUID的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个x是0-9或a-f范围内的一个4位十六进制数。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF即为有效的GUID值。

UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。

宿主机OS:Windows 11

Vmware:1621 build-18811642

虚拟机OS:centos79 3100-1160el7x86_64

问题:执行获取磁盘UUID时返回空

解决方法:

1先查看系统是否安装udev相关包,检查OK

2检查Vmware虚拟机配置文件xxxvmx,路径在windows机器创建的虚拟机根目录下。

虚拟机关机后在文件xxxvmx最后新增下面的配置,然后重新打开虚拟机。

切记:虚拟机关机后再修改文件!!!!否则不生效!!!

3再次执行,获取UUID成功

4网友说后续有变更虚拟机配置,如添加磁盘,修改网卡类型或者其它的 *** 作,diskEnableUUID参数又会重置为FALSE。

经本人测试,添加删除磁盘并没有将配置文件中diskEnableUUID修改为FALSE,大家若遇到再次不能获取UUID的情况,不妨关闭虚拟机后查看下xxxvmx配置文件。

UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分。

UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。目前最广泛应用的 UUID,即是微软的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的应用,则有 Linux ext2/ext3 档案系统、LUKS 加密分割区、GNOME、KDE、Mac OS X 等等。

UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。

 // 如果使用的JDK15的话,那么生成UUID变成了一件简单的事,以为JDK实现了UUID: 

javautilUUID,直接调用即可 

UUID uuid  =  UUIDrandomUUID(); 

String s = UUIDrandomUUID()toString();//用来生成数据库的主键id非常不错。。   

//UUID是由一个十六位的数字组成,表现出来的形式例如 

//550E8400-E29B-11D4-A716-446655440000

通用的GUID的结构如下

typedef struct _GUID {

DWORD Data1;

WORD Data2;

WORD Data3;

BYTE Data4[8];

} GUID;

举一个例子:

假设一个GUID的格式是这样的 6B29FC40-CA47-1067-B31D-00DD010662DA

其中Data1 是32位,可以看做8个四位十六进制数,对应于上面的6B29FC40

其中Data2 是16位,可以看做4个四位十六进制数,对应于上面的CA47

其中Data3 是16位,可以看做4个四位十六进制数,对应于上面的1067

其中Data4 比较特殊,是8个字节也就可以看做16个四位十六进制数

取其Data4[0],Data4[1]来组成4个四位十六进制数,对应于上面的B31D

取其Data4[2],Data4[3]来组成4个四位十六进制数,对应于上面的00DD

取其Data4[4],Data4[5]来组成4个四位十六进制数,对应于上面的0106

取其Data4[6],Data4[7]来组成4个四位十六进制数,对应于上面的62DA

注意:四位十六进制数对应一个GUID字符。

在Windows下提供了一个函数可以生成一个GUID。需要使用的头文件 "objbaseh",需要链接的库ole32lib。

HRESULT CoCreateGuid(GUID pguid);

在Linux下首先需要下载到相应的库文件和头文件

如果是Debian用户可以方便的通过apt命令来获取相关资源。

apt-get install uuid-dev

安装完成后会发现

在/usr/include/ 下有一个uuid文件夹,其中则包含了uuidh头文件。

在/usr/lib/ 下有几个libuuid的链接库文件,包括静态和动态链接库。

打开uuidh你会发现有一个uuid_generate(uuid_t out) 的函数声明。我们可以通过调用这个函数来生成UUID。

uuid_generate(reinterpret_cast<unsigned char >(&guid));

生成GUID是不是很简单!是的,因为生成的算法不用我们去实现,我们是站在前人的肩膀所以我们要感谢他们。

下面给出一个WINDOWS和LINUX下通用的程序。

// uuid_testcpp

#include <string>

#include <stdioh>

#include <iostream>

#include "uuid_testhpp"

#ifdef WIN32

#include <objbaseh>

#else

#include <uuid/uuidh>

#endif

using namespace std;

namespace ChinuxTeam

{

GUID CreateGuid()

{

GUID guid;

#ifdef WIN32

CoCreateGuid(&guid);

#else

uuid_generate(reinterpret_cast<unsigned char >(&guid));

#endif

return guid;

}

std::string GuidToString(const GUID &guid)

{

char buf[64] = {0};

#ifdef __GNUC__

snprintf(

#else // MSVC

_snprintf_s(

#endif

buf,

sizeof(buf),

"{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",

guidData1, guidData2, guidData3,

guidData4[0], guidData4[1],

guidData4[2], guidData4[3],

guidData4[4], guidData4[5],

guidData4[6], guidData4[7]);

return std::string(buf);

}

}

对应的头文件

// uuid_testhpp"

#include <string>

#include <stdioh>

#include <iostream>

typedef struct _GUID

{

unsigned long Data1;

unsigned short Data2;

unsigned short Data3;

unsigned char Data4[8];

} GUID, UUID;

namespace ChinuxTeam

{

GUID CreateGuid();

std::string GuidToString(const GUID &guid);

}// namespace ChinuxTeam

最后一个 GuidToString()稍微解释一下,作用就是把GUID以固定的格式输出到标准string字符串中,

根据编译器的不同调用分别调用了不同的字符串打印函数。

另外附一个简单的测试函数

#include <string>

#include <stdioh>

#include <iostream>

#ifdef WIN32

#include "objbaseh"

#else

typedef struct _GUID

{

unsigned long Data1;

unsigned short Data2;

unsigned short Data3;

unsigned char Data4[8];

} GUID, UUID;

#endif

namespace ChinuxTeam{

GUID CreateGuid();

std::string GuidToString(const GUID &guid);

}

运行后会生成一个GUID并打印到标准输出的控制台上。

以上就是关于计算机的GUID号怎么查看全部的内容,包括:计算机的GUID号怎么查看、怎么获取uuid、Vmware中虚拟机获取磁盘UUID无返回结果等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9624981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存