对于我为客户开发的应用,我需要获取当前的用户详细信息。 然后我必须通过将这对夫妇“域名\登录”与包含所有授权用户的表进行比较来分配权限。
我重用了@Sergiu Cojocaru here给出的代码,我将其与官方样本(UserInfo)混合以获取更多详细信息:
IReadOnlyList<Windows.System.User> users = await Windows.System.User.FindAllAsync();
var current = users.Where(u => u.AuthenticationStatus == Windows.System.UserAuthenticationStatus.LocallyAuthenticated &&
u.Type == Windows.System.UserType.LocalUser).FirstOrDefault();
// user may have username
var data = await current.GetPropertyAsync(KnownUserProperties.AccountName);
string displayName = (string)data;
// or may be authenticated using hotmail/outlook
if (string.IsNullOrEmpty(displayName))
{
string firstName = (string)await current.GetPropertyAsync(KnownUserProperties.FirstName);
string lastName = (string)await current.GetPropertyAsync(KnownUserProperties.LastName);
displayName = string.Format("{0} {1}", firstName, lastName);
}
但实际上我只从“ KnownUserProperties ”获得“ firstName ”和“ lastName ”。其他属性是空的:
=&GT;这是正常的吗?
问题是预期的一对“域名\登录”基于命令行“ whoami ”的结果,但不会产生相同的结果“ firstName ”和“ lastName ”。
=&GT;有没有办法在应用程序中获得相同的结果?
我指定使用hotmail帐户,但客户帐户必须基于Active Directory:我不知道这是否会改变任何内容......
答案 0 :(得分:0)
获取有关域和域用户更改的信息
var data = await current.GetPropertyAsync(KnownUserProperties.AccountName);
到
var data = await current.GetPropertyAsync(KnownUserProperties.DomainName);
在我身边的结果是: ROM.EUROPE.TECHTEAM.COM \ scojocar