【问题标题】:Turning application's features on/off打开/关闭应用程序的功能
【发布时间】:2013-06-13 04:15:16
【问题描述】:

我希望能够打开/关闭我的 .net 应用程序中的几个功能。据我了解,有几种选择:

  • 配置文件
  • 注册表
  • 自定义 xml 文件

出于安全原因,我想避免与 Windows 注册表相关的任何事情。同时我不喜欢配置文件/自定义 xml 文件的是它可以被客户端访问(例如客户端可以打开他/她没有支付的功能)。

我非常感谢您对我的问题提出建议。有没有办法跟踪配置文件中所做的更改(我仍然希望能够更改其他设置),或者我可以例如构建一些将在我的应用程序发布之前运行的进程并询问要打开哪些功能/off 并将此设置保存在某处(不适用于客户端)。

非常感谢。

【问题讨论】:

  • 数据库怎么样?
  • @LukeMcGregor 非常感谢您的回复。问题是我有一个通用应用程序,其中包含许多不同的功能,大多数客户不需要所有这些功能。因此,我宁愿将一些设置应用于应用程序一次(最好在发布阶段),然后每次都从数据库中读取一些内容。

标签: c# .net configuration app-config config


【解决方案1】:

有很多方法可以处理这种情况,但最简单的方法之一可能是加密配置文件。

  • 使用非对称加密系统(如 RSA)
  • 在构建过程中,使用私钥加密文件,并与应用程序一起分发
  • 在应用程序代码中,使用公钥解密文件,并相应地激活功能

您也可以使用对称加密系统,但非对称方法的优点是最终用户即使通过对应用程序进行逆向工程来检索密钥也无法生成假文件(他仍然可以直接篡改应用程序的二进制文件)。

【讨论】:

    【解决方案2】:

    我看到以下选项:

    1. 每次启动应用程序时都连接到远程服务器或远程数据库以检查用户权限。主要缺点:用户在使用您的应用程序时必须有互联网连接。

    2. 将其存储在本地(无论哪种方式),但以加密形式存储。最简单的选择是使用证书。主要弱点:您必须提供“基础设施”来管理许可证密钥。

    【讨论】:

    • 非常感谢您的回复,Garath。我会尝试加密。
    【解决方案3】:

    如果您只想拥有一个数据不会被篡改的地方,您可以签署 app.config。这样它就无法更改,但它仍然是可读的 xml。它没有加密。

    有关签署 XML here 的更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 1970-01-01
      相关资源
      最近更新 更多