GetUserName Win32 API有什么问题?

我使用GetUserName Win32 API来获取我的计算机的用户名,但是当我在家时使用我的VPN连接工作时,我发现用户名是不同的(只有大写字母和小写字母)。 我想知道如果VPN客户端或其他软件可能会影响用户名?

该API返回登录到计算机时用户键入的名称。 所以如果我的用户名是'esac',但是我输入'Esac',这个API将返回'Esac'。 随后,如果我输入“ESAC”,那么它也会返回。

GetUserName API指出:

检索与当前线程关联的用户的名称。

使用GetUserNameEx函数以指定的格式检索用户名称。 其他信息由IADsADSystemInfo接口提供。

所以看起来像GetUserName使用IADsADSystemInfo来获取它的信息。

如果你看看IADsADSystemInfo接口,你会发现它有一个方法:

get_UserName
检索当前用户(即登录用户或由调用线程模拟的用户)的Active Directory可分辨名称。

所以,当你通过VPN连接到域名登录时,你很可能会得到当前用户的Active Directory可分辨名称,当你不在的时候,你最有可能得到你输入的用户名(无论你输入什么)用电脑登录电脑。

不是100%肯定的,但我怀疑,当你连接到你的域名网络时,GetUserName将最终与DC通话,否则将使用本地回答