在Windows中,UuidFromString和CLSIDFromString之间有区别吗

In Windows, is there a difference between UuidFromString and CLSIDFromString?

本文关键字:CLSIDFromString 之间 有区别 UuidFromString Windows      更新时间:2023-10-16

我只想仔细检查一下,对于与COM类没有关系的内部生成的GUID,使用哪一个是正确的。

我怀疑它是UuidFromString,但我一直看到使用CLSIDFromString的代码。我模糊地记得CLSIDFromString可能会枚举注册表中列出的COM类,但不确定这是否正确。

Raymond Chen回答了这个问题:

Uuid­From­String:

让我们从Uuid­From­String开始。它采用基本形式的字符串没有花括号。作为一种特殊情况,如果您传递NULL而不是有效的字符串指针,函数仍然成功并设置结果到GUID_NULL。

CLSID­From­String:

稍微复杂一点的是CLSID­From­String。除了接受包含大括号的字符串(被视为GUID)也接受ProgId。在ProgId的情况下,它返回CLSID与该ProgId关联。

我会使用UuidFromString——CLSIDFromString的文档明确指出,它的目的是将StringFromCLSID生成的字符串转换回CLSID

即使这两个函数的行为是相同的(我怀疑可能不是——例如,考虑一下CLSIDFromString可以返回指示类未注册的REGDB_E_CLASSNOTREG或指示注册表I/O错误的REGDB_E_READREGDB),区分CLSID和您自己的内部GUID对象也是很好的做法。