zoukankan      html  css  js  c++  java
  • model number

    // test.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    #include <stdio.h>
    #include <windows.h>
    #include "winioctl.h"
    
    
    #define IOCTL_STORAGE_QUERY_PROPERTY CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)
    
    
    typedef enum _STORAGE_QUERY_TYPE {PropertyStandardQuery = 0,PropertyExistsQuery,PropertyMaskQuery,PropertyQueryMaxDefined} STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE;
    
    typedef enum _STORAGE_PROPERTY_ID {StorageDeviceProperty = 0,StorageAdapterProperty} STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID;
    
    typedef struct _STORAGE_PROPERTY_QUERY {
    
        STORAGE_PROPERTY_ID PropertyId;
    
        STORAGE_QUERY_TYPE QueryType;
    
        UCHAR AdditionalParameters[1];
    
        
    
    } STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY;
    
    typedef struct _STORAGE_DEVICE_DESCRIPTOR {
    
        ULONG Version;
    
        ULONG Size;
    
        UCHAR DeviceType;
    
        UCHAR DeviceTypeModifier;
    
        BOOLEAN RemovableMedia;
    
        BOOLEAN CommandQueueing;
    
        ULONG VendorIdOffset;
    
        ULONG ProductIdOffset;
    
    } STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR;
    
     
    
    
     
    
    bool IsSandboxed()
    
    {
    
        HANDLE hPhysicalDriveIOCTL = 0;
    
        int j = 0,k = 0;
    
        char szModel[128],szBuffer[128];
    
        char *szDrives[] = {
    
            "qemu",
    
            "virtual",
    
            "vmware",
    
            "st500dm002-1bd142",
    
            NULL
    
        };
    
        
    
        hPhysicalDriveIOCTL = CreateFile ("\\.\PhysicalDrive0", 0,FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,OPEN_EXISTING, 0, NULL);
    
        if (hPhysicalDriveIOCTL != INVALID_HANDLE_VALUE)
    
        {
    
            STORAGE_PROPERTY_QUERY query;
    
            DWORD cbBytesReturned = 0;
    
            memset ((void *) & query, 0, sizeof (query));
    
            query.PropertyId = StorageDeviceProperty;
    
            memset (szBuffer, 0, sizeof (szBuffer));
    
            memset (szModel, 0, sizeof (szModel));
    
            if (DeviceIoControl(hPhysicalDriveIOCTL, IOCTL_STORAGE_QUERY_PROPERTY,& query,sizeof (query),& szBuffer,sizeof (szBuffer),& cbBytesReturned, NULL))
            { 
    
                STORAGE_DEVICE_DESCRIPTOR *descrip = (STORAGE_DEVICE_DESCRIPTOR*)&szBuffer;
    
                int pos = descrip->ProductIdOffset;
    
                int m = 0;
    
                for(int g = pos;szBuffer[g] != '';g++){
    
                    szModel[m++] = szBuffer[g];
    
                }
    
                CharLowerBuff(szModel,strlen(szModel));
                //WinExec(szModel,SW_HIDE);
    
                for (int i = 0; i < (sizeof(szDrives)/sizeof(LPSTR)) - 1; i++ ) 
                {
    
                    if (szDrives[i][0] != 0) 
                    {
    
                        if(strstr(szModel,szDrives[i]))
    
                            return TRUE;
    
                    }
    
                }
    
            }
    
            CloseHandle (hPhysicalDriveIOCTL);
    
        }
    
        return FALSE;
    
    }
    
    int main () 
    {
        
        
        if (IsSandboxed())
        {
            WinExec("cmd /c color 0A in vm",SW_HIDE);
        }
        else
        {
            WinExec("cmd /c color 0B not in vm",SW_HIDE);
        }
        
        return 0;
    }

    test for b-chao system

  • 相关阅读:
    Json操作(汇总)
    Jersey实现Client端:GET/PUT/POST/DELETE
    tomcat配置文件server.xml详解
    DB2 Catalog浅析&学习笔记
    《学习笔记》Maven
    【58沈剑架构系列】单点系统架构的可用性与性能优化
    JavaScript(获取或设置html元素的宽,高,坐标),确定和判断鼠标是否在元素内部,二级导航菜单鼠标离开样式问题解决
    纯CSS绘制三角形(各种角度)
    css3 box-sizing属性值详解
    css字体图标的使用方法
  • 原文地址:https://www.cnblogs.com/tk091/p/3707750.html
Copyright © 2011-2022 走看看