0

重複の可能性:
製品を 30 日間の試用版にする方法を教えてください。
30日間タイムトライアルの実施

試用期間が 30 日間の試用アプリケーションをプログラミングしています。

ユーザーのために 30 日間予約するために、システム時間の変更を確認する必要があります。

たとえば、ユーザーがシステムの日付と時刻に 2 日を追加した場合、試用期間に悪影響はなく、DateTime.now から時刻の変更を差し引いて 30 日のままです。

イベント ログを読んで方法を見つけましたが、そのためには管理者権限が必要であり、常に利用できるわけではありません。

管理者権限を必要とせずにそのような情報を取得する方法はありますか?

4

2 に答える 2

1

システム時間の変化を探す代わりに、初日の日付を記録するデータベースを使用して、初日から 30 時間の範囲を計算できます。

そのため、ユーザーが初めてアプリケーションを開いたときに、データベースにクエリを実行して、今日の日付 (初回の開封日) と今日から 30 日後 (初回の開封日) を追加する必要があります。

今日と 30 日後の日付を取得するには、DateTime.Now 関数を使用します。

        string Today = DateTime.Now.Day + " - " + DateTime.Now.Month + " - " + DateTime.Now.Year;
        string End = DateTime.Now.AddDays(30).Day + " - " + DateTime.Now.AddDays(30).Month + " - " + DateTime.Now.AddDays(30).Year;

上記の方法の欠点は、ユーザーがたとえば 2070 年にアプリケーションを開始した場合です。その後、アプリケーションは 2070 年まで期限切れになりません。

そのため、ユーザーのコンピューターから日付を取得するのではなく、オンライン ソースhttp://www.thetimenow.com/から日付を取得することをお勧めします。

于 2012-11-22T08:07:46.677 に答える
-1

残りの日数を保存して、インストールdatetimeして最後のチェックを試すことができdatetimeます。インストール時に両方が設定されていることを確認してください。

ユーザーがプログラムを起動したとき

if (lastCheck > DateTime.Now)
    {
         lastCheck = DateTime.Now;
    }
else
    {
         remainingDays = (DateTime.Now - lastCheck).TottalDays;
    }

これ以上変更しないと、日付を戻すと残り時間が短くなるため、ユーザーは日付を変更することを思いとどまらせます。これは、コードを少し追加するだけで回避できます。かなりシンプルですが効率的だと思います。

編集:質問を誤解した可能性があります。

コードをやり過ぎずに、あなたが望むことを行う方法はありません。最も重要なことは、アプリをクラッキング/エクスプロイトから保護することです。ユーザーが日付で遊びたい場合、それは彼らの損失です。

これがアプリケーションの性質上予想されるものである場合は、アプリケーションが完成する前に対処する必要がありました。

于 2012-11-22T08:12:06.963 に答える