0

ソフトウェアの試用版を作ろうとしています。しかし、私はそれを適切に行うことができません。システムの時計を変更すると、動作しません。

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar expiredate = Calendar.getInstance();

try {
    Date date = sdf.parse("24/06/2015");
    expiredate.setTime(date);
    if (Calendar.getInstance().after(expiredate)) {
        JOptionPane.showMessageDialog(null, "Sorry your software has expired", "Expire",
            JOptionPane.INFORMATION_MESSAGE);
        System.exit(0);
    }
 } catch(ParseException e) {
    // ...
 }
4

2 に答える 2

5

どのくらいのエネルギーを使いたいかを決める必要があります。アプリケーションがクライアントのシステムでのみ実行される場合 (つまり、中央サーバーへの接続は必要ありません) ... オプションはかなり制限されます。

もちろん、アプリケーションは日付/タイムスタンプを保存できますが、システム クロックを改ざんしようとすると役に立ちません。

簡単に言えば、「実装は簡単ですが、回避するのはおそらく簡単」と「実装が難しいため、間違いを犯しやすい」の間でバランスを取る必要があります。つまり、このような「ライセンス チェック機能」によって、潜在的な顧客がソフトウェアを使用することが非常に難しくなる可能性があることに注意してください。または「悪い」: この問題に対する「優れたセキュリティ ソリューション」に多くの時間を費やし、それを実装している間に、ソフトウェアにさまざまなバグを追加します。やる気のあるユーザーが解読できないソリューションを引き出すために必要な労力を過小評価しないでください...

最終提案; 別のアプローチを試してください: アプリケーションで優れたユーザー エクスペリエンスを作成することに重点を置いてください (ただし、機能セットが制限されている可能性があります)。あなたのアプリケーションがお金を払う価値があることを顧客に納得させてください。「試用ライセンス」を提供しないでください。ただし、実際の製品よりも機能が少ない無料の「試用版」です。

于 2015-06-24T10:17:10.803 に答える