アプリ版:「スタンプのみでお礼する」機能のリリースについて

ある実行ファイルに、自分が実行されている環境が仮想PCか、現実のPCかを完璧に区別させるためにはどうすればいいのでしょうか?というか、そのようなことができるのでしょうか?可能性の話でもいいので教えてください。

A 回答 (3件)

ゲストOSがWindows2000 or XPであると仮定して書き込みします。


仮想PCといっても色々あるので下記代表3点を元に・・・
「VirualPC」、「VMWare Server」、「VirtualBox」

--
1. VirtualPC
仮想NICのMACアドレスを調べることによりほぼ判明出来るかと。
仮想NICではアドレスのベンダコード部を見るとMicrosoftになっています。
現在のNICでMicrosoft製はほぼ見受けられない・・・ハズ。(^-^;)
なのでコレで仮想PCか判別出来ます。
(参照:http://itpro.nikkeibp.co.jp/prembk/NBY/techsquar …

2. VMWare Server
「VMware Tools」がインストールされていれば仮想PC、なければ物理PCと判断。

3. VirtualBox
「VirtualBox Guest Additions」がインストールされていれば仮想PC、
なければ物理PCと判断。
--

上記のように仮想PC上でのみインストールされているソフトなり
デバイスなりをチェックしてみて判断するのが妥当かと・・・
Windows APIだけで仮想PCかを判断するのは難しいと思います。

あと補足ですが・・・ANo.2さんが言われている
「ゲームの中には仮想PC上では動かせない様になっている」とは
「DirectX(主に3D)」のエミュレートが実用段階ではなく、
ゲームの初期化でコケて動かないだけの状態だと思われます。
(VMWare Serverでは結構動きますが)

ではでは、参考になれば。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。とても参考になります。いろいろと聞いてみたいことが山ほどありますが、質問の意図が変わってしまうかもしれないので、ここでは質問しないことにします。

お礼日時:2007/10/18 09:44

ゲームの中には仮想PC上では動かせない様になっている


物も有るので多分できるでしょう。
#ただし、この場合はゲームの解析をされてプロテクト
#等を外されない様にデバッガ上で動作しない為の処理
#に引っかかる様です。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。ANo.3さんが言っているようにエミュレータの再現率が低いだけかもしれませんし、そうでないかもしれません。私自身少し調べてみます。

お礼日時:2007/10/18 09:30

実行ファイルに、自分が実行されているとは、


1.実行ファイルの保存先が、仮想PC下にあるか否かと言うことでしょうか?。
2.それとも、実行ファイルのアクセス先が、仮想PCであるか否かと言うことでしょうか?。

1、2の場合は、実行ファイル自体は、解らないでしょう。

解るのは、実行ファイルのオペレーターだけでしょう。

追加です。
本当は、プログラミングで、仮想PCか、現実のPCかを判断させたいが それは、可能かを知りたいのでは、??。

この回答への補足

曖昧な質問をして申し訳ありません。率直に言えば、1で2でもありません。お察しの通りです。あるOSによって動かされている実行ファイルが、そのOSが仮想PC上にあるか、それとも物理PC上にあるかを判断させるにはどうすればいいかです(これも曖昧?)。
実行ファイルにシリアルナンバー式のプロテクトなどをつけたとしても、その仮想PCファイルごと不特定多数に共有されたら意味がありませんよね。だからこのような質問をさせてもらいました。

補足日時:2007/10/18 09:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!