4

私はシェアウェアのSDKのようなライブラリを開発しています(C ++を使用)。ライブラリは単純なdllであり、いくつかの機能を提供します。だから、私の最初の質問は、単純なdllでどのような種類の試行が可能かということです。トライアルdllの機能をカットしたくないので、タイムトライアルを使用する傾向があります。

libの使用時間を追跡する方法を大まかに理解しているので、2番目の質問は試用期間の満了をどのように示すかです。

現在のところ2つのアイデアがあります。

  1. 評価期間が終了すると、ライブラリの読み込みに失敗します。

    また

  2. 評価期間が終了すると、ライブラリは正常に読み込まれますが、ある種のナグ画面が表示されます。

でもどちらもかなりラフに見えますので、アドバイスをお願いします。

ありがとう!

4

3 に答える 3

1

有効期限後に正しく理解できれば、DLLのエクスポートテーブルにある関数を他のユーザーが呼び出さないようにする必要があります。

Dllが正常に読み込まれると、ナグ画面が表示されていても、他のユーザーがDLLコードを呼び出すことができることに注意してください。したがって、タイムチェックまでにエクスポートされたすべての関数を保護する必要があります。

ナグ画面を使用することには、いくつかの欠点があります。a)開発者は、サードパーティのライブラリが独自のナグ画面をポップアップすることを好みません。b)libがUI以外のアプリで使用されている場合(たとえば、デスクトップと対話しないサービスで使用されている場合)はどうなりますか?

私の見解では、ライブラリのロードを許可するのが最善です(DLLが他のモジュールのIATにある場合)が、試用期間が終了すると、インターフェイスにエクスポートされたすべての関数がエラーコードを返すようにします。このようにして、ライブラリを使用するアプリケーションは、DLLの機能を無視するか、DLLの有効期限が切れていることを示すメッセージを表示するかを選択できます。

お役に立てれば。

于 2009-11-28T19:50:09.490 に答える
1

DLL 関数の 1 つを呼び出すと、「期限切れの試用版ライセンス」エラーが発生する可能性があります。これは、ユーザーにとってより明確で理解しやすいものです。

my2cents
于 2009-11-27T10:07:43.097 に答える
1

(1) では、有効期限が切れると DllMain() で失敗する必要があります。DLL を使用するプログラムのインポート テーブルに DLL が存在する場合、これはあまり良くありません。

(2)では、より多くの選択肢があり、よりフレンドリーなIMHOです。

有効期限に内部フラグを設定して、nag ダイアログを表示するだけです。

ユーザーがエクスポートされた関数を引き続き呼び出す場合は、フラグを確認して、DLL へのすべての関数呼び出しを失敗させます。

理想的には、DLL に init 関数がある場合、init() が呼び出されたときに有効期限ナグ ダイアログを表示し、特別なコードを返して、実装者が自分のプログラムを認識して存在するようにします。

HTH、エリアス

于 2009-11-27T10:13:27.697 に答える