如何在Windows上获取用户帐户唯一ID(GUID)?

时间:2015-05-19 11:41:55

标签: winapi guid uniqueidentifier

我想获取我的应用程序当前运行的Windows帐户的唯一标识符(GUID而不是SID)。我尝试使用GetUserNameEx作为格式NameUniqueId。它在某些机器上运行良好,但在其他机器上运行ERROR_NONE_MAPPED失败(这似乎是一个已知问题):

How do you read the user's display (first and last) name on all versions of Windows reliably?

Getting the full-name of the current user, returns an empty string (C#/C++)

上述问题主要集中在用户名上,但没有回答如何获取用户帐户GUID。

1 个答案:

答案 0 :(得分:1)

GetUserNameEx的文档说明ERROR_NONE_MAPPED表示用户名不具有指定格式。该函数不能返回不存在的内容;如果没有用户帐户GUID,则该功能无法返回一个。

  

ERROR_NONE_MAPPED 用户名无法使用指定的格式。

相同的文档(在参数部分,NameFormat [in]下面)说(部分):

  

如果用户帐户不在域中,则仅支持NameSamCompatible

因此,您的问题的答案是尝试使用NameUniqueID获取GUID,如果返回ERROR_NONE_MAPPED,则返回使用NameSamCompatible,这在所有情况下都可用。< / p>