我想获取我的应用程序当前运行的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。
答案 0 :(得分:1)
GetUserNameEx的文档说明ERROR_NONE_MAPPED
表示用户名不具有指定格式。该函数不能返回不存在的内容;如果没有用户帐户GUID,则该功能无法返回一个。
ERROR_NONE_MAPPED 用户名无法使用指定的格式。
相同的文档(在参数部分,NameFormat [in]
下面)说(部分):
如果用户帐户不在域中,则仅支持
NameSamCompatible
。
因此,您的问题的答案是尝试使用NameUniqueID
获取GUID,如果返回ERROR_NONE_MAPPED
,则返回使用NameSamCompatible
,这在所有情况下都可用。< / p>