Visual Studio には、ソフトウェアの試用版を作成するためのツールが組み込まれていますか? いいえの場合、どのツールがその仕事をすることができますか?
.NET プラットフォームで試用版を作成するためのベスト プラクティスは何ですか?
これらのプラクティスは、アプリケーションの種類 (Web アプリケーション、Windows フォーム アプリケーション、DLL など) によってどのように異なりますか?
Visual Studio には、ソフトウェアの試用版を作成するためのツールが組み込まれていますか? いいえの場合、どのツールがその仕事をすることができますか?
.NET プラットフォームで試用版を作成するためのベスト プラクティスは何ですか?
これらのプラクティスは、アプリケーションの種類 (Web アプリケーション、Windows フォーム アプリケーション、DLL など) によってどのように異なりますか?
これはShareware Starter Kitで十分にカバーされています。限定トライアル、安全なアクティベーション、登録、Paypal 統合のためのコードが含まれています。強くお勧めします。その車輪を発明したくありません。
私が提供したリンクは素晴らしいものではありません。ライセンスをクリックしてダウンロードする必要があります。そのキットの C# 固有のバージョンを説明するリンクが見つかりません。
「トライアル」ステータスは、比較的あいまいな概念です。「ツール」を作成できるように正確に指定するのは難しいでしょう。
どんなオプション?
ローカルにインストール可能なソフトウェア:
法的制限。すべての機能はすぐに提供されますが、試用期間が終了したら、ユーザーは自発的に使用を中止する必要があります。基本的には、信用による保護(個人利用者の場合)か、起訴による保護(法人利用者の場合)です。
制限された機能。ユーザーはライトバージョンをダウンロードできます。フル機能を使用する場合は常に、残りの機能のロックを解除するライセンス キーを要求します。または、完全版の秘密のダウンロード リンクを提供します。さらに良いのは、透かし入りのバイナリを作成して、そのソースへの不正な使用/配布を追跡できるようにすることです。
ウェブ ソフトウェア:
次のスレッド 30 日間のタイム トライアルの実装を確認してください。
ユニット数を制限するためのスレッド コピー保護ツールの 1 つに記載されているように、試用版の機能を実装するために利用できるツールキットがあります。
ソフトウェアに試用版機能を実装するための組み込みツールが Visual Studio に用意されているかどうかはわかりません。
Visual Studio または .Net には、ライセンスおよびコピー防止のための組み込みツールがあります。独自のスキームを開発するか、既製のスキームを使用する必要があります。
ベスト プラクティスとヒントについては、この記事を参照してください。
免責事項: 私は、CryptoLicensing の開発者である LogicNP Software で働いています。
試用版の機能は、レジストリからインストールされた日付を読み取ることによって実装され、モードが試用版または有効である場合...
これらのクラスは、レジストリへの読み書きに使用できます...
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;
}
}