Excel VBAでPC固有の不変情報を取得する方法
ツールを作って有料で配布する場合、コピー対策やライセンスの考慮が不可欠となる。コピーして普通に使えると、お金を払って購入した人からすると、迷惑なことだろう。 安易にばら撒かれたら、「買う価値無し」ってことになる。ツールを作る側からしても、苦労の甲斐がなくなる。
単純にコピーしても使えないようにする対策を考える。一案として、パソコン固有の情報をライセンスIDとしてサーバーに登録し、ツール実行時はライセンスIDでサーバーにアクセスして登録済みか否かのチェックを行うことが考えられる。こうすれば、登録したPCのみ、ツールを使うことができる。PC固有情報に加えてツール(アプリ)の情報を登録すれば、PCごとに使えるツールを決めることも可能だ。
この記事では、Excel VBAでパソコン固有の情報を取得する方法を紹介する。そして、その固有情報として、ハードディスク(HD)のシリアルナンバー(シリアル#)を採用する。他にも以下が考えられるが、いずれも変わることがある。
・OSのプロダクトID
→ Windows Updateで勝手に変わることがある。
・コンピュータ名
→ ユーザーが割と簡単に変更できる。
・MACアドレス
→ LANカードが交換されると変わる。
MACアドレスについては、HDのシリアル#と同レベルで変わる頻度が少ないと思うので、これを採用しても良い。HDだって、交換すればシリアル#は変わってしまうが、とりあえずここではシリアル#で話を進める。
HDのシリアル#を取得するサンプルコード(VBA)を以下に示す。
|
|
12行目でディスクのリストを取得。15〜20行目で繰り返しディスクが固定ハードディスクであるかをチェックして、見つかったらそのディスク名とシリアル#を結合して当関数の出力結果としている。16行目は Disk.MediaType = "Fixed hard disk media"
とするのが正解かもしれないが、動作確認していない。
お試しする人に任せる。17行目は、ディスク名は不要かもしれないが、念のため付けておいた。
参考サイト
http://hensa40.cutegirl.jp/archives/5887