验证给定用户名/密码是否为有效的本地管理员的最佳方法是什么?

问题描述:

我有一个UWP应用程序,将由非机器管理员的用户使用。我将在我们的应用程序中创建一个管理页面,仅为我们的应用程序控制一些设置。我想抛出一个用户名/密码对话框,用于访问此管理页面。我只希望本地计算机上的管理员能够访问此管理页面,因此我想验证通过我的登录提示给出的用户名/密码是否为本地管理员。我不需要在任何地方“登录”这个用户,我只需要将访问我的管理页面仅限于管理员的框中。验证给定用户名/密码是否为有效的本地管理员的最佳方法是什么?

有人能指出我正确的方向吗?如果可能,我宁愿使用C#。我看过的很多例子都出现在用户登录中,我只需要验证用户名/密码是否有效admin信誉

+0

可能的重复:http://stackoverflow.com/questions/36713824/how-to-get-group-infolike-guest-admin-etc-of-current-login-user-in-uwp-windo – Konstantin

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) { 
     ... 
    } 
} 

但是这种方法不允许验证在同一台机器上的多个管理员。作为一项解决方案,您可以在管理页面/设置中的某处维护已批准用户的列表。

+0

谢谢你响应。有趣的是,即使我正在开发UWP应用程序 - 我们的应用程序将永远不会提交到商店,而是直接出售给客户。因此,我们不需要遵守任何商店认证规则。我们牢记这一点 - 您是否知道实现访问管理权限目标的方式? – user6115111

+0

如果您可以编写桌面服务来检查登录/密码,那么您的UWP应用程序可以与此类服务进行通信。 – Konstantin