在 UWP 应用中,我启用了该User Account Information
功能。
我需要获取当前登录用户的用户名和域名(分别)(用户使用本地 Active Directory 帐户登录 -不是 Azure AD)。
例如,用户将domain1
使用用户名登录到 Active Directory 域user1
。即domain1\user1
。
我正在使用以下代码来尝试获取所需的详细信息:
IReadOnlyList<User> users = await User.FindAllAsync();
var user = users.FirstOrDefault();
// get domain
var data1 = await user.GetPropertyAsync(KnownUserProperties.DomainName);
string strDomainName = (string)data1;
// get username
var data2 = await user.GetPropertyAsync(KnownUserProperties.AccountName);
string strUserName = (string)data2;
问题:
strDomainName
返回domain1.com\user1
。为什么这包括.com
我们所有域的部分?在 c# winforms 应用程序上,我们可以轻松获得domain1\user1
,没有任何问题。strUserName
返回一个空字符串。IE ””。为什么这不返回任何值?
我还检查了以下内容:
KnownUserProperties.FirstName
返回一个空字符串。IE ””KnownUserProperties.LastName
返回一个空字符串。IE ””KnownUserProperties.PrincipalName
返回一个空字符串。IE ””KnownUserProperties.ProviderName
返回一个空字符串。IE ””KnownUserProperties.GuestHost
返回一个空字符串。IE ””
我还需要启用与该功能类似的其他User Account Information
功能吗?或者是否需要向应用授予任何其他权限才能获取此信息?
我知道我可以获取值strDomainName
并执行字符串函数来获得我需要的东西。但我想知道是否有任何方法可以直接获取这些信息。也很好奇为什么KnownUserProperties.AccountName
上面列出的其他属性(例如FirstName
等)LastName
只返回一个空字符串。
我正在运行以下版本的 Windows:
我将以下设置为Target version
and Min Version
:
为了验证,我还使用来自 GitHub 的 Microsoft 的 UserInfo 示例项目进行了测试,得到了以下输出:
以下是在Settings
>>中自动启用的Privacy
。Account Info
TestApp
是我尝试过的应用程序,User Info C# Sample
是来自 GitHub 的示例应用程序:
更新:
也启用该Enterprise Authentication
功能后,KnownUserProperties.PrincipalName
确实返回预期值。即user1@domain1.com
。但是,上面列出的其他属性(例如FirstName
等)LastName
只返回一个空字符串,我仍然找不到任何返回domain1\user1
的属性(没有.com
部分)