如何获取 Windows 上的用户帐户唯一 ID (GUID)?
How to get user account unique id (GUID) on Windows?
我想获得我的应用程序当前 运行 所在 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。
GetUserNameEx 的文档指出 ERROR_NONE_MAPPED
表示用户名在指定格式中不可用。函数不能return不存在的东西;如果没有用户帐户 GUID,则该函数不能 return 一个。
ERROR_NONE_MAPPED The user name is not available in the specified format.
相同的文档(在 Parameters 部分,NameFormat [in]
下)说(部分):
If the user account is not in a domain, only NameSamCompatible
is supported.
所以你的问题的答案是尝试使用 NameUniqueID
获取 GUID,如果 returns ERROR_NONE_MAPPED
退回到使用 NameSamCompatible
,这在所有情况下都可用。
我想获得我的应用程序当前 运行 所在 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。
GetUserNameEx 的文档指出 ERROR_NONE_MAPPED
表示用户名在指定格式中不可用。函数不能return不存在的东西;如果没有用户帐户 GUID,则该函数不能 return 一个。
ERROR_NONE_MAPPED The user name is not available in the specified format.
相同的文档(在 Parameters 部分,NameFormat [in]
下)说(部分):
If the user account is not in a domain, only
NameSamCompatible
is supported.
所以你的问题的答案是尝试使用 NameUniqueID
获取 GUID,如果 returns ERROR_NONE_MAPPED
退回到使用 NameSamCompatible
,这在所有情况下都可用。