- 締切済み
試用期限付きのアプリケーションを作成したいのですが
インストール時にレジストリにインストール日時情報を保存し、 アプリケーション起動時に試用期限チェックが できるようなものを作成したいのですが。 どのようにすればインストール時にインストール日時をレジストリに保存することができるのでしょうか? installshield ver11 Professional Editionを使用して試用期限付きのプログラムを作りたいと思っています。(Win2000,XP) Premierの体験版機能を使用すれば容易だと思うのですが、わけあって体験版で作ることができません。 あと、アプリケーション起動時にそのレジストリにある 情報を参照して試用期限をチェックする というようなことはできますでしょうか? ご教授、よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- SpiralGalaxy
- ベストアンサー率39% (649/1653)
MFCでレジストリ操作するのだったら CWinApp:SetRegistryKey() で初期設定(書き込む場所を決める) CWinApp::WriteProfileString() で文字列書き込み CWinApp::GetProfileString() で文字列取得 他にも int もやり取りできます。調べてください。 Win32 API の RegOpenKey() とかでやるより遥かに楽です。 ただ HKREY_CURRENT_USER 配下に書き込まれるので、ちょっと知っている人には キーをすぐ発見されて、消されると思うので「試用期限付きのプログラム」としては弱いかも。 >あと、アプリケーション起動時にそのレジストリにある >情報を参照して試用期限をチェックする >というようなことはできますでしょうか? アプリの初期設定の時に書き込まれたレジストリ値をチェックすればよいと思い ます。 アプリの初回起動時にレジストリに初回起動日付などの値を保存するやり方だと レジストリキーを発見されると例え中身が暗号化されていてもキー毎削除すれば 使用期限付きプログラムにはならなくなってしまいます。 その程度でもよければそれでいいですが。 なので installshield でインストール時に値を書き込んでおいて プログラムからは参照だけするようにすると多少ましかもしれません。 プログラムから参照したときにレジストリの値が存在しなければ「使用期限切れ」 扱いにしてしまえばいいですから。 レジストリに書き込んで悪意のある人にはすぐに発見されますから ばっさり消されても大丈夫なように(上記のこと) また、改竄されないよう暗号化は必須でしょう。 以前そうやって実装したことがあります。
- Tsan
- ベストアンサー率20% (184/909)
私が携わったソフトですと インストーラで期限を書き込むDLLを用意し、スクリプトからそのDLLの関数をコールして暗号化された期限をレジストリに書き込む。 レジストリの書き込みに使用したDLLをするようアプリケーションを作成し、起動時にDLLのチェックルーチンで期限をチェックして期限切れならEXITするよう仕込むというのはいかがでしょう。
お礼
Tsanさんアドバイスありがとうございます! そのDLLは自前で作成されたのでしょうか? 暗号化するという事は レジストリの情報を読む時に復号する仕組みも 必要になるんですよね…。 そのようなDLLがあれば、やりたいことほとんどを実現できるかもしれません。
お礼
アドバイス、ありがとうございます! とても参考になりました! SpiralGalaxyさんのアドバイスで 実現方法がわかりました!