アプリケーションがOracle VirtualBoxで実行されているかどうかを検出するのにthis unitを試しましたが、VirtualBoxが検出されていません。私のアプリがVirtualboxで動作するのを止めるにはどうしたらいいですか?
VirtualBoxにインストールされたWindows 7でテストしました。
VCLアプリケーションがVirtualBoxで実行されないようにする効率的な方法はありますか?
アプリケーションがOracle VirtualBoxで実行されているかどうかを検出するのにthis unitを試しましたが、VirtualBoxが検出されていません。私のアプリがVirtualboxで動作するのを止めるにはどうしたらいいですか?
VirtualBoxにインストールされたWindows 7でテストしました。
VCLアプリケーションがVirtualBoxで実行されないようにする効率的な方法はありますか?
製品の文字列は、例えば、単語「Virtual
」
が含まれている場合は、Win32_BaseBoard WMIクラスを使用して確認することができます。
function _IsOSVirtual(): Boolean;
const
v = 'virtual';
Begin
Result := False;
CoInitialize(nil);
try
if Pos(v, LowerCase(GetWin32_BaseBoard('Product'))) > 0 then
Result := True;
finally
CoUninitialize;
end;
end;
v8以降のVMWareには[440BXデスクトップリファレンスプラットフォーム](https://communities.vmware.com/thread/409703)もあります。 – FredS
を使用すると、(WMIまたは他の方法で)されたBIOS情報を得ることができる場合VirtualBoxのトレースを見つけることができます。
instance of Win32_BIOS
{
...
BIOSVersion = {"VBOX - 1"};
Caption = "Default System BIOS";
Description = "Default System BIOS";
Manufacturer = "innotek GmbH";
Name = "Default System BIOS";
SerialNumber = "0";
SMBIOSBIOSVersion = "VirtualBox";
SMBIOSPresent = TRUE;
SoftwareElementID = "Default System BIOS";
SoftwareElementState = 3;
Status = "OK";
Version = "VBOX - 1";
};
他のクラスを使用すると、VirtualBoxのインストールを識別できます。たとえば、このクエリ:
Select Manufacturer, Model, OEMStringArray from Win32_ComputerSystem
戻り、この値:
instance of Win32_ComputerSystem
{
Manufacturer = "innotek GmbH";
Model = "VirtualBox";
OEMStringArray = {"vboxVer_5.1.22", "vboxRev_115126"};
};
function IsRunningVirtualBox : Boolean;
var
vHandle : THandle;
begin
Result := false;
vHandle := LoadLibrary('VBoxHook.dll');
if vHandle <> 0 then begin
Result := true;
FreeLibrary(vHandle);
end;
end;
あなたはそれがVirtualBoxのを検出していない理由を把握するためのコードをデバッグしようとしましたか?ダウンロードにコメントがあります: "* Windows 8がインストールされている場合、このコードはバーチャルボックスを検出しませんか?"なので、おそらくVirtualBoxの検出は一般的に壊れていますか?検出コードを見ると、実際には非常に簡単なコードです。アプリが実行されているシステムに 'VBoxHook.dll'や' \\。\ VBoxMiniRdrDN'が存在するかどうかをテストするだけです。おそらくあなたのVirtualBoxのバージョンにはこれらのアイテムがありませんか? –
バーチャルボックスの特長は何ですか?ブロックしたいが、他の仮想マシンはブロックしない。仮想マシンは未来です。それらをブロックしようとすると、あなたのソフトウェアの有用性が損なわれます。 –
@DavidHeffernan最低限必要なハードウェア/ソフトウェアサポートの欠如が気になります。 DX10 +またはOpenGL3.0 +が(少なくとも現在は)必要なものは、たとえば正しく動作しません。つまり、ソフトウェアがVM内にあるかどうかなどの他のインジケータからのサポートを回路的に想定するのではなく、必要な特定の要件についてソフトウェアが正しくテストする必要があります...確かにVirtualBoxのサポートは時間とともに変化します。 –