我正在 Windows 中编写凭据提供程序,我正在尝试为其添加 UPN 名称登录支持,因此我使用了TranslateNameW TranslateNameW(UPName, NameUserPrincipal, NameSamCompatible, buffer, &size);
,它在提供 UPN 名称时为我提供 SAM 帐户名称,反之亦然,这仅在域在线时有效并且域脱机时将无法使用。
这里的问题是当域用户被缓存并且域处于脱机状态时,我无法将该 UPN 转换为 SAM 名称,然后 Windows 向我抛出一个错误,说We can't sign you in with this credential because your domain isn't available. Make sure your device is connected to your organisation's network and try again if you previously signed on this device with another credential you can sign in with that credential.
Windows 密码凭据提供程序在这种情况下工作得很好,它能够即使域处于脱机状态,也可以将 UPN 转换为 SAM。
我无法解析 UPN 名称并将其转换为 SAM 名称,因为不能保证 UPN 名称始终与 SAM 名称匹配,即,如果 UPN 是johndoe@example.com
SAM 名称,则不一定可以是johndoe
它jdoe
或任何东西。
所以,我的问题是如何在域脱机时访问该缓存域用户的 SAM 帐户名称,VC++ 中是否有任何函数在域脱机时提供 UPN 时返回 SAM 名称?我该如何处理这种情况?