如何为C#应用程序添加有限的时间和功能?

时间:2016-08-29 04:22:15

标签: c# .net dll

我有桌面C#应用程序,添加这些功能的最佳方法是什么:

  1. 应用程序需要重新安装的时间有限吗?
  2. 有限的特权? (每个用户将拥有对软件某些功能的不同访问权限)
  3. 我希望这些选项没有登录或服务器可访问性。我想要像库或dll这样的东西。

1 个答案:

答案 0 :(得分:0)

  1. 可以轻松完成,同时也很难 为什么可以轻松完成?您只需将第一次启动\安装的时间写入文本文件/注册表/其他位置,并在每次启动时进行检查。
    但是,我不会依赖这种方法,因为任何有经验的用户都可以通过删除/修改文件/注册表项来“重置”此限制。
    如果您的申请是商业性的,则意味着(通常是巨额的)资金损失 回想一下不同的商业应用程序如何提供试用功能(MS Windows,MS Office,Adobe Photoshop等),并回想起300 KB应用程序破解它们的难易程度:)

    如果您想使其安全,那么您需要使用生成和可过期的许可证密钥 - 更好地使用许可证服务器,因为离线密钥生成/验证算法也很容易被黑客入侵。

  2. 如果没有登录/计算机/任何其他身份识别,则无法实施基于角色的系统,因为您需要区分用户。唯一的方法是为不同的角色实现不同的应用程序。

    没有服务器的权限/角色等也意味着硬编码的权限,这非常糟糕 您可以创建类似资源文件的内容,其中包含有关谁是管理员以及谁是简单用户的信息(例如,对于双角色系统)。

    然后,在您的代码中,根据角色实现逻辑:

    if (Session.User.IsAdministrator) // all are own-written classes, of course
        buttonRemoveUser.Show();
    

    可以通过使用角色提供程序等更好的方法来完成,这完全取决于您。

    但是,可以通过反编译器/资源查看器轻松破解这些用户和角色。此外,如果任何用户凭据被泄露,您无法阻止此用户或更改其密码 正确的解决方案是使用服务器身份验证

  3. 您希望创建一个具有功能的系统,这需要客户端 - 服务器架构 在尝试将其实现为离线应用程序之前,请三思 如果可行且安全,那么为什么人们会使用服务器?