有没有办法在winform应用程序中为一组用户实现域认证?
我正在用 C# 编写一个应用程序,它将安装在我们商店的几台 PC 上。我想密码保护程序的一部分功能,基本上是配置。我可以轻松地将密码硬编码到应用程序中,甚至制作加密密码存储,但我希望只有某些用户能够访问配置表单,并且我想使用组从我们的域集中管理这些用户。因此,属于“配置”组的任何人都可以访问表单、按下应用按钮等。
有没有办法在winform应用程序中为一组用户实现域认证?
我正在用 C# 编写一个应用程序,它将安装在我们商店的几台 PC 上。我想密码保护程序的一部分功能,基本上是配置。我可以轻松地将密码硬编码到应用程序中,甚至制作加密密码存储,但我希望只有某些用户能够访问配置表单,并且我想使用组从我们的域集中管理这些用户。因此,属于“配置”组的任何人都可以访问表单、按下应用按钮等。
要检查用户是否在特定的 Windows 组中,WindowsPrincipal.IsInRole,例如:
bool IsInGroup(string user, string group)
{
using (var identity = new WindowsIdentity(user))
{
var principal = new WindowsPrincipal(identity);
return principal.IsInRole(group);
}
}
要查看当前的用户是什么,请使用Thread.CurrentPrincipal。
查看c# 检查用户是否属于组?了解更多信息和一些讨论。
但是,这是您的用例的最佳解决方案吗?如果您在“[您的] 商店中”,是指多个用户将使用一台计算机的销售终端吗?在这种情况下,用户可能不想每次都登录或注销。也许将配置移动到单独的应用程序,使用文件权限保护配置(例如对非管理员只读)并限制对配置应用程序的访问是更好的解决方案。