我有一个UWP应用程序,将由非机器管理员的用户使用。我将在我们的应用中创建一个管理页面,仅控制我们应用的某些设置。我想抛出一个用户名/密码对话框,可以访问此管理页面。我只希望本地计算机上的管理员能够访问此管理页面,因此我想验证通过我的登录提示给出的用户名/密码是否为本地管理员。我不需要在任何地方“记录”这个用户,我只需要访问我的管理页面,只能访问管理员的框。
有人能指出我正确的方向吗?如果可能的话,我宁愿使用C#。我看过的很多例子似乎都记录了用户,我只需要验证用户名/密码是否是有效的管理员信用
答案 0 :(得分:0)
UWP应用程序是沙盒,因此没有提供有关用户权限级别或它们所属的系统组的信息。我可以推荐的最近的事情是存储首次登录用户的用户名,然后检查当前经过身份验证的用户名和域是否匹配存储的值(这样您也将避免输入用户名/密码并显示管理员页面/登录普通用户)。
IReadOnlyList<User> localAuthenticatedUsers = await User.FindAllAsync(UserType.LocalUser, UserAuthenticationStatus.LocallyAuthenticated);
User user = users.FirstOrDefault();
if (user != null)
{
String[] userProperties = new String[]
{
KnownUserProperties.AccountName,
KnownUserProperties.DomainName
};
IPropertySet values = await user.GetPropertiesAsync(desiredProperties);
if (values[KnownUserProperties.AccountName] == storedAccountName && values[KnownUserProperties.DomainName] == storedDomainName) {
...
}
}
但是,此类方法不允许在同一台计算机上验证多个管理员。作为解决方法,您可以在管理页面/设置中的某个位置维护已批准用户的列表。