我们一直在使用 NetGetAadJoinInformation() 函数来获取 Windows 11 AAD 加入工作站上当前登录的用户信息(用户电子邮件)。 但是,在混合环境(Entra ID/本地 AD)中,该函数不会返回用户信息。也就是说,DSREG_JOIN_INFO 的 pUserInfo 始终为 NULL。
DSREGCMD 实用程序以某种方式能够在混合环境中获取当前 AAD 登录的用户电子邮件,该电子邮件显示在“诊断数据 -> 执行帐户名称”下。
是否有可靠的方法可以在混合环境中的 Windows 工作站上以编程方式获取当前登录的 AAD 用户电子邮件? 也就是说,无需运行 DSREGCMD 并解析其输出。
我相信您可能误解了“执行帐户名称”的含义。它实际上显示执行 dsregcmd 命令的用户的用户主体名称 - 与
whoami /upn
相同。
这很容易验证 - 以不同用户 (RunAs) 身份启动命令提示符,您将看到值发生变化。如果您以 SYSTEM 身份启动命令提示符,它将显示计算机帐户作为执行用户。