Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Windows应用程序中基于许可证的配置_C#_Winforms_Configuration_Acl - Fatal编程技术网

C#Windows应用程序中基于许可证的配置

C#Windows应用程序中基于许可证的配置,c#,winforms,configuration,acl,C#,Winforms,Configuration,Acl,我正在用C#(.NET 4.0)开发一个Windows应用程序,需要一些东西来实现一些基本的ACL规则,或者更具体地说,根据用户类型应用某些配置 应用程序具有许可证密钥,我们可以使用这些密钥确定用户类型(即用户、安装程序、工程师)以及其他信息 根据用户类型,某些功能、菜单、按钮和显示数据将有所不同。我可以根据用户类型在应用程序中硬编码显示和隐藏这些元素,但是我们有一个定义权限的权限矩阵,因此我想创建一个ACL,以便我们可以轻松地审核应用程序代码的矩阵 我环顾了一下,但是系统中有很多ACL和安全代

我正在用C#(.NET 4.0)开发一个Windows应用程序,需要一些东西来实现一些基本的ACL规则,或者更具体地说,根据用户类型应用某些配置

应用程序具有许可证密钥,我们可以使用这些密钥确定用户类型(即用户、安装程序、工程师)以及其他信息

根据用户类型,某些功能、菜单、按钮和显示数据将有所不同。我可以根据用户类型在应用程序中硬编码显示和隐藏这些元素,但是我们有一个定义权限的权限矩阵,因此我想创建一个ACL,以便我们可以轻松地审核应用程序代码的矩阵

我环顾了一下,但是系统中有很多ACL和安全代码。安全名称空间似乎是为Windows和文件系统ACL创建的

有人能推荐任何在C#中实现简单ACL的现有类(最好是免费的)吗

我只需要能够做这样的事情:

ACL acl = new ACL();
acl.addRole("User");
acl.addRole("Manufacturer");

acl.addResource("SpecialButton");

acl.deny("SpecialButton");
acl.allow("SpecialButton", "Manufacturer");

// so later in my app I can do

theUserType = "Manufacturer";
// ...
if (acl.isAllowed(theUserType, "SpecialButton")) {
    SpecialButton.Visible = true;
}
我不想试图阻止人们在运行时篡改代码,如果他们想尽力做到这一点,那么他们可以做到,但我希望有一种简单的方法来创建和查询ACL,以确定GUI的外观以及基于密钥加载程序时可用的选项


创建它很容易,但如果已经完成,那就更好了。

< P>如果你将你的应用程序部署到Windows 7或Windows Server 2003/2008,你可能想考虑使用Windows附带的免费授权管理器功能。 有关Microsoft的完整概述,请参阅

本质上,它允许您定义角色、每个角色可以执行的任务以及每个任务中允许的操作

您可以从C#应用程序中使用一个API来查询授权存储,这样您就可以查询特定角色可以执行哪些操作。这将返回分配给该角色的操作编号的汇总列表。然后,您可以测试特定操作是否存在(或者是否缺少),并相应地定制UI

嗯,,
迪恩。

你说的真的不多

你有角色,角色有属性。单个属性可能出现在一个或多个角色中。很简单

许可证密钥定义正在使用的角色。从中加载属性列表,这些属性可以是单独的字符列表(“OPENCONTACT”、“EDITCONTACT”、“DELETECONTACT”)或名称-值对(100=OPENCONTACT、101=EDITCONTACT等)

虽然你可以用AzMan来做这件事,但听起来比你需要的要多


角色/属性列表可以作为在运行时加载的加密资源交付…

我避免使用术语ACL,因为它不同(并且与System.Security内容重叠)。您正在考虑的是基于许可证的配置。我已经看到了这一点,但最初看起来似乎超出了我们的需要。此外,我们确实计划支持Windows XP客户端。我看到他们可以使用XML文件作为角色,这是很好的,因为规则基本上是内置到应用程序中的,而不是从中心源获取或验证。T该应用程序在全球多个用户的PC上独立运行,不依赖于活动的网络连接。显然,您可以让它在XP上运行。此外,不需要活动的网络连接;它可以是独立的。这听起来是一个很好的适合的方法。您认为在ru设置规则有任何问题吗通过代码计时,而不是使用加密资源,每个组都有相应的用户权限?我提出了一些你可以看到的基本代码。你看到这些代码有什么固有的缺陷或问题吗?谢谢!@drew010:看起来很好。这些代码很容易维护,也很容易添加。另外,如果你想存储associ在数据库或其他文件中进行转换看起来很容易。