4

この質問は死んだように見えるので、私は賞金を提供することにしました。

私が知りたいのは、以下のETA1のシナリオが実行可能であり、使用されているかどうかです。そうでない場合は、なぜそうでないのかについての適切な説明が適切な答えになります。もう1つの良い答えは、代替手段です(ただし、internalsvisibleto属性は含まれません)。

最良の答えは、はい、それは実行可能であり、誰もがそれを行い、顧客はそれを愛することです!

ETA2:私は良い解決策を考えたと思います。私は、お客様のエディションと同じように機能するが、ライセンスがなく、属性を使用してクラスとメンバーが非表示になっている配布可能なエディションをお客様に提供します。これは、重要なすべてのメンバーに対してコンパイラ指令を使用して実行できますが、クラスのすべてのメンバーを非表示にするグローバルな方法があるかどうか疑問に思いました。


単純化されたシナリオ:-
何らかの方法でコントロールを拡張するクラスがあり、2つのライセンスでクラスを販売したい。

(1)標準-顧客は、私のクラスを使用しているが、クラス(その内部)をインスタンス化できないx個のコントロールを取得します。
(2)開発者-私のクラスを使用する独自のコントロールを作成できることを除いて、標準と同じです。

私の問題は、開発者の顧客がコントロールを販売するようになると、私のクラスをすべての顧客に公開せざるを得ないことです。

---これを無視する私のスクランブルされた心の中で、それを回避する唯一の方法は、開発者がどういうわけか私のアセンブリを彼らのアセンブリに統合することであり、そのようにしてコンストラクターを内部に保つことができます。または、属性に表示される内部を使用します。/これを無視してください---

ここの誰かが同じ状況にあったと確信しています、そしてどんな助けでも大いに感謝されるでしょう。

ETA1:ここで声を出して考えていますが、顧客が追加できる許容される呼び出しアセンブリ名のリストを作成することはできます。製品を出荷するとき、顧客のアセンブリはリストに含まれないため、特定のクラスをインスタンス化できません。(リストは明らかにハッシュ化できます)。

4

4 に答える 4

2

ライセンス情報(つまり、StandardとDeveloper)をレジストリのどこかに保存すると思います。そのような場合、より簡単な解決策はLicenseManagerを実装することだと思います。これは、ほとんどの.NETコンポーネントベンダーが使用しているものです。

http://msdn.microsoft.com/en-us/library/fe8b1eh9.aspx

お役に立てれば !

于 2010-09-26T21:12:51.973 に答える
1

ライセンスキーを使用しないのはなぜですか? あなたのクラスはライセンスキーを読み取り、ライセンスが提供する権限に応じて、実行時にメソッドを無効にしますか?

ライセンス キーは、構成ファイルで定義できます。

于 2010-09-30T22:29:48.177 に答える
1

ランタイムがそれをサポートすると仮定すると、唯一の本当の解決策を思いついたと思います。あなたが別の DLL である限り、開発者がオブジェクトをインスタンス化できれば、コンストラクターやファクトリなどの背後に隠そうとしても、他の誰でもインスタンス化できます。

しかし、消費者は、出荷されたアセンブリを自分のものに統合することによって、その制限を回避することさえできないのではないでしょうか?

于 2010-09-17T20:30:08.857 に答える
0

.NET の性質上、これは難しい問題です。これは闇の中のショットですが、IL レベルでアセンブリ暗号化を提供するCodeVeilなどの製品を調べることができます。アセンブリは基本的に暗号化されて出荷され、キーは顧客に渡されます。顧客は、組み立て手順を解読できる唯一のエンティティになります。現在、CodeVeil はその復号化キーについて次のように主張しています。

キーがアプリケーションに保存されていても、安全ではありません。実際、キー自体はデータ自体の変換ほど重要ではありません。CodeVeil はまた、復号化されたアセンブリをキャプチャしようとするハッカーを挫折させるために、多くのランタイム保護操作を使用します。さらに、CodeVeil は、.NET ランタイムがその特定のメソッドを実行するのに十分な情報だけを復号化する、非常に特別な復号化システムを使用します。コードがアセンブリ自体と同じメモリに格納されることはないため、解読されたコードを分析のためにディスクにダンプすることはできません。

これは明らかに良いことですが、解読アルゴリズムの一部として彼らが使用する他の技術に精通していないため、これは調査する必要がある部分です. これの優れた点は、それが機能する場合、顧客は満足し、独自の API を介してアセンブリの一部を公開することで、顧客を満足させることができるということです。同時に、コードは ILDASM や Reflector などのツールから保護されたままになります。

于 2010-09-26T05:57:41.247 に答える