web-dev-qa-db-ja.com

.NETソフトウェアの試用版を作成するにはどうすればよいですか?

Visual Studioには、ソフトウェアの試用版を作成するための組み込みツールがありますか?どのツールがその仕事をすることができるかがなければ?

.NETプラットフォームで試用版を作成するためのベストプラクティスは何ですか?

これらのプラクティスは、アプリケーションの種類(Webアプリケーション、Windowsフォームアプリケーション、dllなど)にどのように依存しますか?

26
sashaeve

「試行」ステータスは、比較的あいまいな概念です。 「ツール」を構築できるように、正確に指定するのは難しいでしょう。

どのようなオプションですか?

ローカルにインストール可能なソフトウェア:

  • 法的制限。全機能はすぐに利用できますが、試用期間が終了した後は、ユーザーは喜んで使用を中止する必要があります。基本的に、信頼による保護(個人ユーザーの場合)または法的訴追による保護(企業ユーザーの場合)。

  • 制限された機能。ユーザーはライトバージョンをダウンロードできます。完全なものにすることを決定したときはいつでも、残りの機能のロックを解除するライセンスキーを要求します。または、フルバージョンの秘密のダウンロードリンクを提供します。さらに良いことに、透かし入りのバイナリを作成して、そのソースへの不正な使用/配布を追跡できるようにします。

Webソフトウェア:

  • トライアルまたはフルは、ユーザーアカウントでアクティブ化された機能の問題です。すべてのユーザーがWeb経由でアプリケーションにアクセスするため、不正な方法でアプリケーションをインストールするためのソフトウェアコピーを持っている人は誰もいません。各ユーザーは自分のアカウントで作業し、自分に付与されている機能にのみアクセスできます。
8
user151323

これは シェアウェアスターターキット で非常によくカバーされています。限定トライアル、安全なアクティベーション、登録、Paypal統合のためのコードがあります。強くお勧めします、あなたはその車輪を発明したくありません。

私があなたに与えたリンクは素晴らしいものではありません、あなたはダウンロードに到達するためにライセンスをクリックしなければなりません。そのキットのC#固有のバージョンを説明するリンクがもう見つかりません。

8
Hans Passant

次のスレッドを確認してください 日間のタイムトライアルを実装しています。

スレッドの1つに記載されているように、試用版の機能を実装するために利用できるツールキットがあります ユニット数を制限するためのコピー防止ツール

Visual Studioが、試用版機能をソフトウェアに実装するための組み込みツールを提供しているかどうかはわかりません。

3
K Singh

VisualStudioまたは.Netにはライセンスとコピー防止のための組み込みツールがあります。独自のスキームを開発するか、既製のスキームを使用する必要があります。

ベストプラクティスとヒントについては、この記事を参照してください: CryptoLicensingを使用してソフトウェアをハッカープルーフおよびクラックプルーフにする8つの方法

免責事項:私はCryptoLicensingの開発者であるLogicNPSoftwareで働いています

1
logicnp

試用版の機能は、レジストリからインストール日を読み取り、モードが試用版か有効かによって実装されます。

これらのクラスは、レジストリへの読み取りとレジストリからの書き込みに使用できます。

    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;
        }
    } 
0
user1942876