こんにちは、30 日間の試用を提供するアプリケーションがあります。インストール時に、現在の値でレジストリ キーを追加していますDateTime.Now
。
installDate = DateTime.Now;
RegistryKey regKeyAppRoot = Registry.CurrentUser.CreateSubKey(registryKeyPath);
regKeyAppRoot.SetValue("InstallDate", installDate);
アプリケーションが開始されるたびに、レジストリから値をロードして現在のDateTime.Now
値と比較し、比較の結果に応じて適切なメッセージを表示します。
RegistryKey regKeyAppRoot = Registry.CurrentUser.CreateSubKey(registryKeyPath);
installDate = (DateTime)regKeyAppRoot.GetValue("InstallDate");
if (installDate.AddDays(30) > DateTime.Now)
; //MessageBox.Show(...)
私の問題は、システム時刻を (過去に) 単純に変更すると、条件が満たされないため、アプリケーションを再び使用できるようになることです。これは、DateTime.Now プロパティが、このコンピューターの現在の日付と時刻に設定された DateTime オブジェクトを現地時間として取得するため、説明できます。
それを回避して、アプリケーションがインストールされてからの正確な日数を取得するにはどうすればよいですか?