在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无返回结果等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)