ユーザーが時計を元に戻しているかどうかを確認するにはどうすればよいですか?
-
20-09-2019 - |
質問
私のデスクトップ プログラムでは、ユーザーが時計を元に戻しているかどうかを確認したいと考えています。
そのために、特定のオペレーティング システム ファイルのタイムスタンプを現在のコンピュータの日付と比較します。コンピュータが現在の日付と考えている日付より後の日付がある場合は、時計を戻しているに違いありません。
Windows XP の場合、次のようなファイルを使用しています。
c:\win386.swp
c:\windows\user.dat
and several others.
2 つの質問:
これはこれを行う適切な方法ですか、それとももっと良い方法がありますか?
(1 に対する答えが「まとも」であると仮定します) Windows Vista と Windows 7 の比較に適したファイルは何でしょうか?
結論:プリヤンクは、私には理解できなかった明らかなことを言いました。システム ファイルを使用するのではなく、プログラム自体のタイムスタンプを使用するのが最も簡単で単純な方法かもしれません。結局のところ、インストールされた日付は、試用を開始したい日付とまったく同じです。
結局のところ、あなたの回答と、他の関連する StackOverflow の質問や言及された記事の調査により、私はより単純なスキームを決定するに至りました。試用版ユーザーは、試用版を使用するためのキーをすでに取得する必要があります。キーに登録日を埋め込んでいます。時計を戻すために確認する必要はありません。代わりに、現在時刻が登録日と登録日プラス n 日の間にあるかどうかを確認できます。
彼らがその計画を回避するのに苦労したいのであれば、そうさせてください。そういった人たちはとにかくお金を払わないという意見には同意します。プログラムを、人々が楽しみ、使いたくなり、ほとんどの人がお金を払う価値のあるものにしましょう。
解決
Windows ファイルは常に古い日付になります。プログラムの作成日または変更日をシステムの日付と照合するのが最善です。または、プログラムを終了するときは必ずタイムスタンプを記録し、次回プログラムを開始したときと比較してください。常に NTP が存在します。 http://en.wikipedia.org/wiki/Network_Time_Protocol
他のヒント
という私見を行うには良い方法は、レジストリにプログラムが実行し、次の実行時に現在のタイムスタンプであることを比較し、すべてがOKであれば、タイムスタンプを更新された最初の時間を現在のタイムスタンプを保存することです。
これは単にいくつかの意見と参照を提供するために、直接の答えではありません。私はコメントとして追加するのはあまりにも長います。
目的はデモ/試用のための期間限定のソフトウェアを作成する場合は、、我々はあなたがそれを渡すハック「」にユーザーのためにそれと傾向を実装して行くどのくらいの間のバランスを見つける必要があります。
私は頻繁にあなたのソフトウェアがハッカーを集めた場合、それはおそらく良い/便利な何か、人々に伝えるました。誰も重宝していないソフトウェアを保護しない時点ます。
とにかく、哲学的な話はさておき、以下の通りですカップルの良いこのトピックについて読みます:
ジョエルのフォーラムに期間限定のトライアルを実装する方法< BR>
SO
上時間限定トライアルおよびWindows認定する
はSO
オプションでは、Webサービスまたはタイムサーバーから日付を取得することです。ここでの問題は、インターネット接続が利用可能である場合にのみ動作することですので、これは、より安全な1のためだけの補完方法になります。
Windowsは、システム時刻の変更を通知するためのAPIを提供します。一つの例SYSINFO.OCXのActiveXコントロールが提供されるここをます。