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

本文关键字:时间 功能 添加 应用程序 | 更新日期: 2023-09-27 18:04:39

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

  1. 限定时间后,应用程序需要重新安装?
  2. 有限特权?(每个用户对软件的某些功能的访问权限不同)

我希望这些选项没有登录或服务器的可访问性。我想要库或dll之类的东西

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

  1. 这很容易做到,但同时也很困难。
    为什么很容易做到呢?您可以简单地将第一次启动'安装的时间写入文本文件/registry/中,并在每次启动时检查它。
    但是,我不会依赖这种方法,因为任何有经验的用户都可以通过删除/修改文件/注册表项来"重置"此限制。如果你的应用程序是商业性的,那么这意味着(通常是巨大的)金钱损失。回想一下不同的商业应用程序是如何提供试用功能的(MS Windows, MS Office, Adobe Photoshop等),并回忆一下它们是多么容易被300 KB的应用程序破解:)

    如果你想让它安全,那么你需要使用生成的和可过期的许可证密钥——最好使用许可证服务器,因为离线密钥生成/验证算法也很容易被黑客攻击。

  2. 您不能在没有登录/计算机/任何其他标识的情况下实现基于角色的系统,因为您需要区分用户。做到这一点的唯一方法是为不同的角色实现不同的应用程序。

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

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

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

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

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

您想要创建一个具有功能的系统,这需要客户机-服务器架构。
在尝试将其实现为离线应用程序之前请三思。
如果这是可能的和安全的,那么人们为什么要使用服务器呢?