如何创建.NET软件的试用版?

时间:2010-03-11 09:56:56

标签: c# .net visual-studio trial

Visual Studio是否具有用于创建软件试用版的内置工具?如果没有什么工具可以完成这项工作?

在.NET平台上创建试用版的最佳做法是什么?

这些做法如何依赖于应用程序类型(Web应用程序,Windows窗体应用程序,等等)?

5 个答案:

答案 0 :(得分:8)

“试用”状态是一个相对模糊的概念。很难如此精确地指定它,以便可以为它构建“工具”。

有什么选择?

可在当地安装的软件:

  • 法律限制。完整功能正在关闭,但用户应该在试用期结束后不再使用它。基本上,信托保护(针对私人用户)或通过法律起诉保护(针对公司用户)。

  • 受限制的功能。用户可以下载精简版。每当他们决定使用完整版本时,他们会请求一些许可证密钥来解锁其余的功能。或者,您提供完整版的秘密下载链接。更好的是,如果您创建带水印的二进制文件,以便可以跟踪未经授权的使用/分发到其来源。

网络软件:

  • 试用版或完整版是用户帐户中已激活功能的问题。当所有用户通过Web访问应用程序时,没有人拥有软件副本以未经授权的方式安装它。每个用户都使用自己的帐户,只能访问授予他们的功能。

答案 1 :(得分:8)

这在Shareware Starter Kit中得到了很好的介绍。它具有有限试用,安全激活,注册和Paypal集成的代码。强烈推荐,你不想发明那个轮子。

我给你的链接不是很好,你必须点击许可才能下载。我找不到描述该套件的C#特定版本的链接。

答案 2 :(得分:3)

检查以下主题 Implementing a 30 day time trial.

有一些工具包可用于实现其中一个主题中提到的试用版功能 Copy protection tool to limit number of units.

我不知道visual studio是否提供了一些内置工具来在软件中实现试用版功能。

答案 3 :(得分:1)

Visual Studio或.Net中有用于许可和复制保护的内置工具。您需要开发自己的方案或使用现成的方案。

有关最佳做法和提示,请参阅此文章:8 Ways To Make Your Software Hacker-Proof and Crack-Proof With CryptoLicensing

免责声明:我在CryptoLicensing的开发人员LogicNP Software工作

答案 4 :(得分:0)

试用版功能由。实现 从注册表中读取已安装的日期以及模式是试用还是有效...

这些类可用于读取和写入注册表...

    static string Regname = "Registryname";
    public bool writeRegistryKey(string Key, string value)
    {
        try
        {
            Microsoft.Win32.RegistryKey key;

            key = Microsoft.Win32.Registry.ClassesRoot.CreateSubKey(Regname);
            key.SetValue(Key, value);
            key.Close();
            return true;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
            return false;
        }
    }

    public string readRegistryKey(string Value)
    {
        try
        {

            string keyValue = null;
            Microsoft.Win32.RegistryKey key;
            key = Microsoft.Win32.Registry.ClassesRoot.CreateSubKey(Regname);
            keyValue = key.GetValue(id).ToString();
            key.Close();
            return keyValue;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
            return null;
        }
    }