1

こんにちは、私は現在 .NET ライブラリ (コントロールではない) を開発しており、"開発" と自由にランタイムに展開可能なライセンス スキームを組み合わせて、それを使用する方法を検討しています。

開発者のライセンスについて考えています。ある種のノードロック (ファイルおよび/またはサーバー/Web サービス) は問題ありませんが、開発者が実行時にソフトウェアを自由に配布できるようにしたいと考えています。

ランタイムライセンスの場合、ライセンスキーのMD5ハッシュ、呼び出しアセンブリ(または実行可能ファイル/モジュール-不明)の会社情報、またはおそらく独自のものの一部として持つことをお勧めします厳密な名前のハッシュ キー?

ソフトウェアがリリース/配布されるたびに、ユーザーがランタイム ライセンスを生成する必要があることを意味しますが、それほど面倒ではないと思います。これは、有効な開発/ビルド ライセンス/ノードロック マシンから実行できるため、プロセスが非常にシンプルで簡単になります。

これは、この段階では非常に大きなアイデアです。このアイデアについて、人々の考えを聞きたいです。

4

4 に答える 4

3

これについてのいくつかの考え:

  • Joel Spolsky が、ソフトウェアのライセンス メカニズムを壊すよりも、ライセンスの取得を簡単にする必要があることを指摘したと思います。開発者としてノード ロック ソフトウェアを扱ってきた経験があると、特に複数のマシンを使用している場合は、これが厄介な問題になる可能性があります。ユーザーベースのライセンスを見てください (つまり、私のユーザーは自分のプロファイルのどこかに単一のライセンスを持っており、それがまだ使用されていない場合は、使用しているマシンに関係なく使用できます)。
  • ランタイム ライセンスが無制限であるにもかかわらず、同じライブラリに対してシート単位の開発者ライセンスが必要であるというデュアル ライセンス スキームの問題が予想されます。たとえば、開発者が開発目的でランタイムを「ライセンス」するのを妨げているのは何ですか?
  • 施行は別の問題です。クライアントがライセンス契約に違反しているかどうかをどのように確認しますか? ライブラリを「家に電話」させると、多くの企業のファイアウォール環境での使用が除外される可能性が高くなります。
  • このスキームにどれだけの労力を投資する必要がありますか? 買えますか?クライアントが代わりにアップグレードを購入するように、ライブラリを改善するために時間を使うことができますか?
  • 同等のライブラリがある場合は、何らかの種類のコピー防止機能があるかどうかを確認してください。そうでない場合は、すぐに忘れてしまいます。競合他社に売り上げを渡すことになるからです。
于 2009-02-20T13:53:08.370 に答える
1

アイデアとコメントをありがとう。

はい、考慮すべきいくつかの良い点があります。

議論を続ける。

私はここで無敵のライセンスシステムを開発しようとしているわけではありません (おそらくそれは不可能であり、ドングルなどを使用したくありません)。既製のソリューションは決して実現しません。

たとえば、ライセンスを別の開発者に送信したり、たとえば 5 つではなく 1 つのライセンスで「逃げたり」するのが簡単にならないようにしたいだけです。正当なユーザーはお金を払いますが、決心したユーザーは何があってもそれを回避するので、わざわざ彼らを止めようとはしません. とにかく「開発者の名誉」の雰囲気があるべきだと思います.仲間の開発者を食い物にするのは悪いカルマIMOです. ナイエベ?おそらく。

dev のランタイム ライセンスを使用している開発者への回答です。ここで何かが欠けているかもしれませんが、ソフトウェアの出荷準備が整ったとき (つまり、構築されて使用できるようになったとき) にランタイム ライセンス キーが顧客によって生成されるという考え方です。アプリケーションの開発に使用されるマシン ロックされた開発者ライセンス キー。

私が考えているライセンスは、ライブラリと共に配布される単なるファイルであるため、必要に応じて開発用とランタイムを切り替えることができます。私のライセンス コードは、それがどのライセンス タイプであるかを知ることができます (ライセンス ファイルの暗号化されたブロックの dev/rt インジケータ?)

dev ライセンス キーは、ソフトウェアと共に提供するツールからキー発行 Web サービスを呼び出して、アクティブ化/作成する必要があります。ユーザーは、名前やメールアドレスなどの情報を提供します。このツールは、マシン固有のものを取ります。すべてが Web サービスに送信され、個人情報 (生のテキスト コピーも?) を含むライセンス ファイルとハッシュ (MD5 ではなく SHA です!) が返されます。

実行時に、私のライブラリはライセンス キー ファイル (開発または実行時) を読み込み、それに応じてライセンスを検証します (ノードが実行されているか、それを呼び出しているアプリを検証します)。ライセンス キー ファイル ストリームを渡して、提案どおりにユーザー コードを呼び出すことができます。

これは機能しますか、それとも私は本当に怒っていますか?

乾杯。

于 2009-02-20T14:36:16.907 に答える
1

誰もがライセンスを嫌うので、コード内のオブジェクトの 1 つに設定された単純なライセンス キーを使用しないのはなぜですか?

YourNamespace.Licensing.SetLicenseKey(193421340982384);

ビルドごとにライセンスキーを再作成する必要はありませんが、面倒です。ただし、提供したライセンス キーを公開キー トークンに変換できるようにすると、それがコードを呼び出すアセンブリの公開キー トークンと一致するかどうかを確認できます。

于 2009-02-20T13:43:29.483 に答える
0

ライブラリが実際に何をしているのか教えていただけると助かります。しかし、私が提案する 1 つの方法は、System.ComponentModel.Component クラスからライブラリを継承することです。これにより、ライブラリがプロパティ DesignMode にアクセスできるようになり、Visual Studio デザイナーで実行されているか実行時に実行されているかを区別できます。次に、コンポーネントがデザイナー (おそらくコンストラクター) で実行されている場合にのみ、ライセンスを適用できます。.

if(this.DesignMode){
///Do your check here
}

ライセンス自体に関しては、この記事のリンク テキストから多くの情報を得ることができます。

もちろん、ライブラリの機能を知らなければ、これが適切なアプローチであるかどうかを判断することは困難ですが、デザイナー サーフェスでホストされている DataSet のようなものである場合、このアプローチはさらに調査する必要があります。

于 2009-02-20T14:33:15.450 に答える