![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
質問概要
タイトルの通り
質問詳細
Windowsアプリとか、
「1回や2回、試しに使ってもらっても良いが、これを使って業務とかやられたら敵わん
そのぐらい何度も使いたいならキチンと対価を払って契約してもらわんと」
という場合があります。
マイクロソフト社などの超巨大ソフト会社なら、購入したユーザーにIDを発行して、ソフト起動のたびに開発会社のサーバーにアクセスし、IDが有効の場合のみ、ソフトの利用を許可する、
といったいった仕組みにするでしょう。
こういう、「配布元がみとめた、正規の利用者のみ、使用を許可する」
という仕組みをエクセル、VBAマクロプログラムなどに同様の仕組みを装備するにはどうしたらいいでしょうか?
条件
配布するプログラムは、エクセルマクロ,VBAなどのレベル。
すなわち、前述の、「利用者にIDを発行して、起動のたびに開発元にアクセスさせて。。。」
という大掛かりな仕組みはできない。
加えて、エクセルマクロやVBAレベルなので、コピーもし放題。
配布は対面ならUSBメモリーやSDカードなどの媒体を介して、非対面ならメール添付など。
つまり日曜プログラマーがつくる、お手軽に配布できるプログラムなので、
私たち相手が無制限に友達に配りまくる、というシュチュエーションもあり得る、ということ。
こういう条件下で、
数回、数日のお試し利用ならいいが、それ以上の(例えば10回以上)利用はできない、
とするにはどういう方法があるでしょうか?
自分で考えたのですが、
例えば起動時にパスワードを求める、としても、最初に渡した相手が、その次に渡す時にパスワードもセットで渡してしまえば何の効力もありません。
次に考えたのが、
起動するごとに過去の起動回数をカウントし、ログなどに記録して、制限回数以上の起動をさせない、というもの。これも、渡した相手(さらにはそれ以降の配布先)が、渡されたプログラムをマザーとして保存しておき起動制限がかかったら、マザーをコピーして使ってしまえば起動回数制限などかいくぐってしまいます。
次に考えたのが、渡したその日のみ、起動できる。日付が変われば起動しない、というソースコードを組んでおく、というものです。(まあ、起動回数制限とは少し異なりますが、大異はないでしょう)
これはどうでしょうかね、相手に渡すたびに、毎回ソースコードの日付を変える、ってのも面倒ですが。。。
いい方法や実際にソフト会社が使う方法を教えてください
No.5ベストアンサー
- 回答日時:
No.2です。
> これ、回数制限上限到達したら、アンインストールして再度インストールしたらまた使えるようになるのではありませんか、その可能性はないでしょうか?
そのソフトウェアの開発側がアンインストール機能を提供していて、その中でレジストリーのクリアを行うようにしていれば、再インストールすると再度まっさらな状態からはじまりますからまた規定回数使えることになります。
そういう機能を提供せず、利用者はインストールフォルダごと削除するだけであればレジストリーはそのままなので、インストーラーの中で「所定のレジストリーのエントリーが無ければ作成して初期値0をセットする。有れば”既定の利用回数を超えているのでインストール出来ません”といったエラーダイアログを表示して終了する」といった仕様にすれば再利用を防止できるでしょう。
まずはWindowsのレジストリーとはどういうもので、どんな風に使うのかを勉強されるとよいかと思いまます。
市販のソフトウェアや広く使用されているシェアウェア、フリーウェアの多くはレジストリを使って様々な機能や制限を実現しています。
参考まで。
No.6
- 回答日時:
一方向関数じゃなくて暗号学的ハッシュ関数かもしれない。
とにかく、あなたは使用を許可する日付からこの秘密の関数でパスワードのリストを生成して使用者に与える。あなたのプログラムは今日のパスワードを今日の日付から同じ関数で生成して使用者が与えられたリストの中にそれを知っているかを試す。使用者は今日の日付からパスワードが生成されていることを知っていても具体的な関数を知らなければ今日のパスワードを予想できないというのがこの関数に課せられた前提。ご回答ありがとうございました
それって、
「ソースコードにこのプログラムが実行できる日付を直書きして、起動時にパソコンの内部時計、あるいはインターネット経由しての現在日付と照合して、不一致なら途中終了」
と変わらないと思うのですが。。。。
No.4
- 回答日時:
素人だけど考えてみた。
パスワードを今日の日付から一方向関数で生成する、この関数を秘密にする。No.2
- 回答日時:
Windowsソフトウェアならインストーラーを作成し、その中でレジストリーに該当ソフトウェアの起動回数を保持するエントリーを追加して初期値0をセット。
該当ソフトウェアの起動時の初期処理の中でそのエントリーの値をチェックし、規定の回数以下ならその値をインクリメントして正常起動。既定の回数を超えていたらエラーダイアログを表示して終了。
そんな感じでしょう。
“既定の回数”もレジストリーに保持するようにすれば、配布先ごとに利用回数の制限値を変えることも可能になります。
Excelのテンプレートなどを配布するのであればVBAで所定の機能(マクロ等)が起動されるたびに上記と同様のことを行えばよいかと思います。
参考まで。
ご回答ありがとうございます
そういう方法でおこなうんですね
これ、回数制限上限到達したら、アンインストールして再度インストールしたらまた使えるようになるのではありませんか、その可能性はないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
- 新卒・第二新卒 就活 新卒 自己PR 強み 添削お願いします。 以下の文章で自己PRを書いてみたのですが、どこが競争 3 2023/02/25 21:27
- ネットワーク ストリーミング配信されている動画ファイルは保存できますか? 7 2023/12/18 19:07
- その他(プログラミング・Web制作) Windows上のプログラム。「予め決められた時刻に自分で起動して処理して自分で終了する」って可能? 3 2023/01/04 14:29
- FTTH・光回線 インターネット回線について、突然落ちてパソコン再起動で直ります。 4 2022/08/31 10:47
- 消費者問題・詐欺 お金を取り返すことは可能でしょうか? 4 2023/01/07 13:17
- その他(データベース) 業務用のデータベースサーバーの選び方について 4 2022/11/22 10:22
- Windows 10 誤作動? 5 2023/12/29 12:50
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- 訴訟・裁判 ①こうゆう裁判↓は、本人訴訟でしてるのですか。 ②なんでニュースになるのですか。本人がマスコミにタレ 3 2023/07/11 12:05
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows Media Player 11を多重...
-
【Windows10】パソコンがEZ MOD...
-
VirtualBox でWindows XP イン...
-
DELLのPCにPre-Boot Syst...
-
レジストリの変更が反映されない
-
マウスカーソルの横にある砂時...
-
Dynabook のSSD換装に失敗します
-
メモ帳(notepad.exe)の起動オプ...
-
三相200V7.5KWモータ...
-
アプリケーション起動時には音...
-
X Window Systemが起動しない
-
BIOSにUSBが表示されない
-
ソフトを多重起動させる方法
-
SBI証券HYPER SBI 2のエラー
-
初期化したい/インストールディ...
-
至急お願いします Androidのス...
-
CDを入れたままにするとOSが起...
-
「F1 」「F2」を押さなければ立...
-
ウイルスバスター起動時にWindo...
-
バッファーのオーバーラン?でP...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レジストリの変更が反映されない
-
DELLのPCにPre-Boot Syst...
-
Windows Media Player 11を多重...
-
VirtualBox でWindows XP イン...
-
【Windows10】パソコンがEZ MOD...
-
マウスカーソルの横にある砂時...
-
アプリケーション起動時には音...
-
PCの知識なし太郎です。 Sataポ...
-
メモ帳(notepad.exe)の起動オプ...
-
SBI証券HYPER SBI 2のエラー
-
富士通アップデートナビを起動...
-
Dynabook のSSD換装に失敗します
-
BIOSの次にno option to boot t...
-
聞いたこともないような中国の ...
-
windows11 「更新の一時停止」...
-
WindowsホストのVMware worksta...
-
パソコンのBIOSの優先順位を変...
-
こうなったときの対処をご教授...
-
三相200V7.5KWモータ...
-
exeファイルが起動しない
おすすめ情報
> 加えて、エクセルマクロやVBAレベルなので、コピーもし放題。
配布は対面ならUSBメモリーやSDカードなどの媒体を介して、非対面ならメール添付など。
つまり日曜プログラマーがつくる、お手軽に配布できるプログラムなので、
私たち相手が無制限に友達に配りまくる、というシュチュエーションもあり得る、ということ。
の部分の真意を補足します。
回答者様によっては
「サーバーダウンロードで配布する時に、相手のコンピュータの固有番号を記録しておき、起動時にその記録した固有番号と、ソフトを起動したパソコンの固有番号を照合し、不一致だったら、プログラムを途中終了させる、という手があるよ。
これならダウンロードしたパソコン以外では起動しないよ」
というお答えになるかもしれませんが、
上記のようなお手軽な配布方法をとるので
その方法は採れません、
ということです。