WindowsXP SP3以降における.NETで質問です(言語はVB2008)とします。


インストールされたPCに依存する固有のIDを取得したいと考えています。
なにか良い方法をご存じの方は教えてください。

つまり、AというPCに、xというソフトを入れた場合、a'というIDを取得でき
その後、xを一度アンインストールして、Aへ再度入れなおしてもa'という
IDが再取得できます。
一方、BというPCに、xというソフトを入れた場合、取得できるIDはb'であり
B上からはa'のIDが取得できることはないようにしたいのです。

調べてみたら、Win32_OperatingSystemクラスを利用して取得できる
System.Management.ManagementObjectから、"SerialNumber"を呼び出すことで
それぞれ別のIDが取得できるように思えました。
しかし、共通項は見つけられていないのですが、xのログを調べてみると
PCによっては、"SerialNumber"から取得できる値は、空であるケースがあることに
気が付きました。

そこで、"SerialNumber"に代わるものはないか、知恵を借りたい次第です。
よろしくお願い致します。

※「そんなものはありません」という答えはコメント欄に記載してください。
回答に記載頂いた場合は、不適切な解答とさせていただきます。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/09/08 23:12:17
  • 終了:2010/09/11 09:27:13

ベストアンサー

id:yossiy7 No.3

勇者よっしー回答回数778ベストアンサー獲得回数962010/09/09 23:01:49

ポイント27pt

MACアドレスが駄目なら、HDDのシリアル番号とかどうでしょうか。

http://www.google.co.jp/search?hl=ja&q=windows+HDD+%E3%82%B7%E3%...

トップから検索してVBでの取得方法のサンプルプログラムも見つかりました。

id:halohalolin

yossiy7さん何度もありがとうございます。

今のところCPUの番号と、OSのインストール日時で対応していたのですが

HDDのシリアル番号も検討させて頂きます。

2010/09/10 00:25:01

その他の回答(4件)

id:tasklight No.1

tasklight回答回数323ベストアンサー獲得回数402010/09/08 23:54:01

ポイント27pt

Win32_WindowsProductActivation の ProductIDプロパティにインストールされたWindowsのプロダクトキーが入っていますので、それをユニークキーにしてみてはいかがでしょう。

id:halohalolin

tasklightさん、ありがとうございます。

参考にさせていただきます。

2010/09/09 10:57:46
id:yossiy7 No.2

勇者よっしー回答回数778ベストアンサー獲得回数962010/09/09 21:43:24

ポイント18pt

今時ネットワークカードが無いPCというのは無いので、MACアドレスはどうでしょうか?

id:halohalolin

yossiy7さん、ありがとうございます。

コメント欄にも記載したのですが、ユーザがMACアドレスを修正できるケースもあるというのが問題ですね。

@IT:Windows TIPS -- Tips:ネットワーク・インターフェイスのMACアドレスを変更する

http://www.atmarkit.co.jp/fwin2k/win2ktips/356macaddr/macaddr.ht...

2010/09/10 00:19:36
id:yossiy7 No.3

勇者よっしー回答回数778ベストアンサー獲得回数962010/09/09 23:01:49ここでベストアンサー

ポイント27pt

MACアドレスが駄目なら、HDDのシリアル番号とかどうでしょうか。

http://www.google.co.jp/search?hl=ja&q=windows+HDD+%E3%82%B7%E3%...

トップから検索してVBでの取得方法のサンプルプログラムも見つかりました。

id:halohalolin

yossiy7さん何度もありがとうございます。

今のところCPUの番号と、OSのインストール日時で対応していたのですが

HDDのシリアル番号も検討させて頂きます。

2010/09/10 00:25:01
id:h_kondo No.4

h_kondo回答回数33ベストアンサー獲得回数32010/09/10 00:28:49

ポイント18pt

機械本体シリアル番号が取得できる場合は、それを使用する。

シリアル番号が取得できない場合はWindowsのプロダクトIDを使用するという処理でよいと思います。

同じソフトの同時起動を防ぐという程度の保護でしたら、USBメモリのシリアル番号をチェックする

ことでソフトウエアとUSBメモリをひもづけて置くという方法はどうでしょう。

id:moonskyinfo No.5

moonskyinfo回答回数16ベストアンサー獲得回数02010/09/09 11:25:30

ポイント10pt (はてなにより削除しました)
  • id:halohalolin
    SerialNumberについては、以下の情報も見つかりました

    http://jehupc.exblog.jp/d2009-06-10
    DELLのOSのProductIDは同じらしい:3流プログラマのメモ書き

    自分の環境では、SerialNumberの値が空値とか、どの機種でも同じというのは再現できていないだけに
    「SerialNumberが駄目なら、InstallDateにすればいいじゃない!」という結論に進んでいいのかどうか
    悩みどころです。

    参考 - WMIを使ってOSの情報を取得する: .NET Tips: C#, VB.NET, Visual Studio
    http://dobon.net/vb/dotnet/system/wmiwin32os.html
  • id:ken3memo
    ネットワークカードのMACアドレスじゃ駄目ですよね。
    http://d.hatena.ne.jp/babydaemons/20080415/1208257815
    http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200403/04030029.txt
    自信がないのでコメント欄で失礼します。
    ※ http://cloud.watch.impress.co.jp/epw/cda/security/2007/12/05/11790.html どこまで取得できるのかなぁ。こんな時、プライバシー保護が邪魔ですよね(なんて個人的感想でした。)
  • id:ken3memo
    Windowsが見ている
    ハードウエアハッシュの値
    http://www.atmarkit.co.jp/fwin2k/qanda/002wpa/wpa_02.html
    が取得できれば、、と思い、あきらめきれずに探すが・・・見つからなくて、またコメントどまり(笑)
    何か、いい、値が見つかるといいですね。※コメント欄・ブコメを汚してスミマセン。
  • id:halohalolin
    ken3memoさん、ありがとうございます。
    あとで、ささやかですがポイントを送付させていただきます。
     
    情報が何でも欲しかったので、あやふやな情報でも構いません。
    お気軽に書き込んで頂ければ幸いです。
  • id:halohalolin
    ken3memoさん、MACアドレスですが、OS的にユーザが手動で変更できる場合があるようですね。

    @IT:Windows TIPS -- Tips:ネットワーク・インターフェイスのMACアドレスを変更する
    http://www.atmarkit.co.jp/fwin2k/win2ktips/356macaddr/macaddr.html

    PC・B上から、ユーザの設定によってはa'のIDが取得できることになってしまいますので、ちょっとまずいですね。

    その他ハードウェアハッシュについてですが、プロセッサに関しては、ユーザがプライバシーソフトをインストールすることで、取得できなくなるらしいです。

    「プロセッサ・シリアル・ナンバ」とは:ITpro
    http://itpro.nikkeibp.co.jp/word/page/10032165/

    取れなかったときに備えて、複数から取得するしくみを用意するのがベストなのでしょうか・・・?
  • id:halohalolin
    ソースコードはVBSなので、ちょっと条件から外れますが
    WindowsAPIからハードウェア・OSに関して取得できる情報とサンプルソースが記載されているサイトを見つけました。

    VBS for Windows Management Instrumentation
    http://www.geocities.jp/maru3128/wmi.html

    総当りで値を取得する方法を取るのであれば、参考になりそうです。
  • id:yossiy7
    HDDのシリアルの情報はポイント0とした理由は何ですか?
    納得いく回答なければ運営者に連絡します
  • id:ken3memo
    halohalolin さんへ
    MACアドレスは変更可能みたいですね。情報どうも。
    ※仮想化などではよく集約前のMACアドレスにしたかったりで使うみたいですね。

    yossiy7 さんへ
    >HDDのシリアルの情報はポイント0とした理由は何ですか?
    横からスミマセン。
    質問状態が<b>締切</b>で、まだ、終了していませんよ(9/10 23時現在)
    なので、ポイント配分は終了後だと思うので、少し待ってみては。

  • id:halohalolin
    yossiy7さん

    個人的理由(リアル世界側の用事に対応していた)により、終了までに時間がかかりお待たせしました。


    ken3memoさん、フォローありがとうございます!
  • id:halohalolin
    h_kondoさん、ポイント配布後は回答に返答が書き込めない?ようなので、こちらで返答します。

    エミュレータによる複数イメージによる起動なども対策するなら、ドングル的な発想で対象する事も考える必要がありますね。
    参考にさせて頂きます。ありがとうございます。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません