檢測(cè)程序是否是在虛擬機(jī)中運(yùn)行源碼是一款檢測(cè)如果你的程序是在虛擬機(jī)內(nèi)運(yùn)行和禁止工具,最近在項(xiàng)目中遇到一個(gè)虛擬機(jī)檢測(cè)的問(wèn)題,需要檢測(cè)當(dāng)前程序是否在虛擬機(jī)中運(yùn)行,相信很多朋友也會(huì)有同樣的問(wèn)題,大家下載編譯使用。
判斷程序是否運(yùn)行在虛擬機(jī)中的代碼
首先我們要了解一下什么是虛擬機(jī), 對(duì)虛擬機(jī)的通用解釋是通過(guò)軟件模擬的具有完整硬件系統(tǒng)功能的, 運(yùn)行在一個(gè)完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng). 通過(guò)虛擬機(jī)軟件, 你可以在一臺(tái)物理計(jì)算機(jī)上模擬出一臺(tái)或多臺(tái)虛擬的計(jì)算機(jī), 這些虛擬機(jī)就像真正的計(jì)算機(jī)那樣進(jìn)行工作, 例如你可以安裝操作系統(tǒng), 安裝應(yīng)用程序, 訪問(wèn)網(wǎng)絡(luò)資源等等. 對(duì)于你而言, 它只是運(yùn)行在你物理計(jì)算機(jī)上的一個(gè)應(yīng)用程序, 但是對(duì)于在虛擬機(jī)中運(yùn)行的應(yīng)用程序而言, 它就像是在真正的計(jì)算機(jī)中進(jìn)行工作. 因此, 當(dāng)我在虛擬機(jī)中進(jìn)行軟件評(píng)測(cè)時(shí), 可能系統(tǒng)一樣會(huì)崩潰, 但是, 崩潰的只是虛擬機(jī)上的操作系統(tǒng), 而不是物理計(jì)算機(jī)上的操作系統(tǒng), 并且, 使用虛擬機(jī)的恢復(fù)功能, 我可以馬上恢復(fù)虛擬機(jī)到安裝軟件之前的狀態(tài). 現(xiàn)在比較流行的虛擬機(jī)軟件有 VMWare 和 Microsoft Virtual PC , 它們都能在 Windows 系統(tǒng)上虛擬出多個(gè)計(jì)算機(jī), 用于安裝 Windows 或其他操作系統(tǒng). 相比而言, VMWare 不論是在多操作系統(tǒng)的支持上, 還是在執(zhí)行效率上, 都比 Microsoft Virtual PC 明顯高出一籌. 但是 VMWare 沒(méi)有虛擬顯卡, 而是通過(guò) VMWare Tools 才能用上高分辨率和真彩色. Microsoft Virtual PC 模擬了一個(gè)比較通用的顯卡:S3Trio32/64(4M), 這點(diǎn)看來(lái)比較通用, 易用性較好.
以下主要代碼主要判斷程序是否在虛擬機(jī)環(huán)境中運(yùn)行, 測(cè)試環(huán)境為 Windows 系統(tǒng), 在 Windows XP SP2 + Microsoft Visual C++ 2003 下調(diào)試成功, 附編譯的檢測(cè)程序