2

私のデスクトップ プログラムでは、ユーザーが時計を元に戻したかどうかを確認したいと考えています。

そのために、特定のオペレーティング システム ファイルのタイムスタンプを現在のコンピューターの日付と比較します。コンピューターが現在の日付であると判断した日付より後の日付があれば、彼は時計を元に戻したに違いありません。

Windows XP では、次のようなファイルを使用しています。

c:\win386.swp
c:\windows\user.dat
and several others.

2 つの質問:

  1. これはこれを行うためのまともな方法ですか、それとももっと良い方法がありますか?

  2. (1 に対する答えが「まあまあ」であると仮定) Windows Vista と Windows 7 で比較するのに適したファイルは何ですか?


結論: Priyank は、私にはわからない明白なことを言いました: システム ファイルを使用するよりも、プログラム自体のタイムスタンプを使用するのが最も簡単で簡単な方法かもしれません。結局のところ、それがインストールされた日付は、試用を開始したい日付とまったく同じです.

結局のところ、あなたの回答と、関連する他の StackOverflow の質問と言及された記事に関する私の調査により、私ははるかに単純なスキームを決定することになりました。試用版のユーザーは、試用版を使用するために既にキーを取得する必要があります。キーに埋め込まれた登録日を取得しました。時計を戻すためにチェックする必要は本当にありません。代わりに、現在の時刻が登録日と登録日 + n 日の間にあるかどうかを確認できます。

彼らがそのスキームを回避するのに苦労したいのなら、彼らに任せてください. 私は、それらの人々がとにかく支払わないことに同意します。あなたのプログラムを、人々が楽しみ、使いたがり、ほとんどの人がお金を払う価値のあるものにしましょう。

4

5 に答える 5

3

Windows ファイルの日付は常に以前のものです。プログラムの作成日または変更日をシステム日付で確認することをお勧めします。または、プログラムを終了するたびに、必ずタイムスタンプを書き留めて、次にプログラムを起動したときと比較してください。常に NTP があります: http://en.wikipedia.org/wiki/Network_Time_Protocol

于 2009-11-17T08:29:52.560 に答える
2

私見を行うためのより良い方法は、プログラムが最初に実行されたときに現在のタイムスタンプをレジストリに保存し、それを次回の実行時に現在のタイムスタンプと比較し、すべてが問題なければタイムスタンプを更新することです。

于 2009-11-17T08:28:54.623 に答える
2

これは直接的な回答ではなく、意見と参考文献を提供するためのものです。コメントとして追加するには長すぎます。

デモ/トライアル用の期限付きソフトウェアを作成することが目的である場合、それを実装するための時間と、ユーザーがそれを「ハッキング」する傾向との間のバランスを見つける必要があります。

あなたのソフトウェアがハッカーを引き付けるなら、それはおそらく何か役に立つ/良いものだと私はよく言います。誰も役に立たないソフトウェアを保護しても意味がありません。

とにかく、哲学的な話はさておき、以下はこのトピックに関するいくつかの良い読み物です:

Joel のフォーラムで期間限定試用版を実装する方法SOでの
期間限定試用版と Windows 認定SO
での期間限定試用版の実装に関するアドバイスが必要

于 2009-11-17T10:35:47.163 に答える
0

Windows は、システム時刻の変更を通知するための API を提供します。1 つの例は、ここで提供される sysinfo.ocx ActiveX コントロールです。

于 2009-11-17T08:39:42.203 に答える
0

オプションは、Web サービスまたはタイム サーバーから日付を取得することです。ここでの問題は、これはインターネット接続が利用可能な場合にのみ機能するため、より安全な方法を補完する方法にすぎないことです.

于 2009-11-17T08:28:53.833 に答える