通用的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并打印到标准输出的控制台上。
1遇到这个问题,只能通过u盘安装最新版电脑系统,进行解决。优盘要求是8G或者8G以上的,准备好优盘后需要在电脑上下载系统安装程序,打开App Store 搜索 Mojave,,再点击获取。等待下载完成,下载完成后先不要启动安装,如果下载速度较慢可以到网盘或者其他地方找下载资源。

2系统安装程序下载完之后,将准备好的优盘插到电脑上(桌面会显示优盘的名称),打开“应用程序—>其他—>磁盘工具”;

3打开磁盘工具之后,将优盘抹掉(格式化)成「Mac OS X 扩展(日志式)」格式、GUID 分区图,并将优盘命名为「Mojave」如下图所示:按照途图中顺序依次检查,检查没问题后点抹掉;

4优盘抹掉之后,打开“应用程序—>其他—>终端”;

5打开终端之后 将下列代码一字不差的粘贴到终端里面去:
sudo /Applications/Install\ macOS\ Mojaveapp/Contents/Resources/createinstallmedia --volume /Volumes/Mojave /Applications/Install\ macOS\ Mojaveapp --nointeraction
6粘贴进去之后按回车键,会提示你输入密码,这个密码是你电脑的开机密码,输入的过程因为输入密码是加密的所以屏幕不会有任何反应,输完密码回车即可,然后是漫长漫长漫长的等待,等待的时间长短取决于你电脑的配置
GetSetting 函数
从 Windows 注册表中的应用程序项目返回注册表项设置值。
语法
GetSetting(appname, section, key[, default])
电脑在安装GHOST系统时,出现“系统被恶意修改,请从正确渠道获取系统安装程序”提示时,说明这个版本 *** 作系统有问题,请更换 *** 作系统后重新安装即可。
Ghost系统是指通过赛门铁克公司(Symantec Corporation)出品的Ghost在装好的 *** 作系统中进行镜像克隆的版本,通常GHOST用于 *** 作系统的备份,在系统不能正常启动的时候用来进行恢复的。
苹果双系统,安装os x,说这个磁盘没有使用guid分区表方案。是设置错误造成的,解决方法如下:
1、首先在Mac⌘+R,然后按开机键。
2、接着在页面,点击磁盘工具,点击磁盘。
3、然后点击磁盘右侧栏的-抹掉。
4、在d出的对话框中,格式mac os扩展(日志式),方案(GUID分区图),点击抹掉,如图。
5、然后点击重新安装MacOS,即可安装MacOS的系统了,如图。
您想问的是苹果笔记本电脑重装系统显示安装时发生错误,请尝试重新运行此应用的原因吗?这种情况原因如下:
1、安装程序损坏:安装程序可能损坏或不完整,导致无法正确安装系统。解决方法是重新下载或获取安装程序,并检查程序是否完整。
2、硬件故障:苹果笔记本电脑的硬件问题也可能导致系统安装失败,如硬盘故障、内存不足等。解决方法是检查硬件是否有故障,并进行修复或更换。
3、网络连接问题:如果您是通过网络连接下载安装程序,网络连接不稳定或速度慢也可能导致安装失败。建议您检查网络连接是否正常,并尝试使用其他网络连接方式。
4、其他软件冲突:某些第三方软件可能与系统安装程序冲突,导致安装失败。建议您先卸载可能造成冲突的软件,然后再尝试安装系统。
以上就是关于如何快速生成 UUID GUID全部的内容,包括:如何快速生成 UUID GUID、没有mac版本的软件怎么安装、vb 获取已安装的程序名和路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)