VC怎么获取硬件ID,CPU,硬件,网卡等

 我来答
huanglenzhi
2017-02-05 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517192
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
CString GetMacAddress()
/*
*    通过WMI取第一块活动网卡地址,事先需要调用过CoInitialize()初始化COM
*/
{
    HRESULT hRes;

    hRes = CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT,
        RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL);
    if (FAILED(hRes))
        return _T("");

    IWbemLocator *pLoc = NULL;
    hRes = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID*)&pLoc);
    if (FAILED(hRes))
        return _T("");

    IWbemServices *pSvc = NULL;
    hRes = pLoc->ConnectServer(_bstr_t(L"ROOT\\CIMV2"), NULL, NULL, 0,
        NULL, 0, 0, &pSvc);
    if (FAILED(hRes))
    {
        pLoc->Release();     
        return _T("");
    }

    hRes = CoSetProxyBlanket(pSvc, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE,
        NULL, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_DEFAULT);
    if (FAILED(hRes))
    {
        pSvc->Release();
        pLoc->Release();     
        return _T("");
    }

    IEnumWbemClassObject* pEnumerator = NULL;
    hRes = pSvc->ExecQuery(_bstr_t(L"WQL"), 
        _bstr_t(L"SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = TRUE"),
        WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, 
        NULL, &pEnumerator);
    if (FAILED(hRes))
    {
        pSvc->Release();
        pLoc->Release();
        return _T("");
    }

    CString szMacAddress = _T("");
    while (true)
    {
        IWbemClassObject *pclsObj = NULL;
        ULONG uReturn = 0;

        hRes = pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn);
        if (FAILED(hRes) || !uReturn)
            break;

        VARIANT vtProp;
        VariantInit(&vtProp);
        if (SUCCEEDED(pclsObj->Get(L"MACAddress", 0, &vtProp, 0, 0)))
        {
            if (V_VT(&vtProp) == VT_BSTR)
            {
                szMacAddress = vtProp.bstrVal;
                VariantClear(&vtProp);
                pclsObj->Release();
                break;
            }
            VariantClear(&vtProp);
        }
        pclsObj->Release();
    }

    pEnumerator->Release();
    pSvc->Release();
    pLoc->Release();

    return szMacAddress;
}
------解决方案--------------------奥,那个DLL大概在02年左右整理的好像,时间太久了,应该是不支持vsita的,楼主看看这段代码是否有用?我是拷贝来的:/************************************************************  //函数名称:GetDriverInfomation  //函数功能:得到驱动器的信息  //参数1:bAlpha - BYTE型,驱动器的代号A-Z(a-z)  //参数2:iGTI_TYPE - int,将要获取的驱动器信息类型  // GDI_VOLUMENAME 得到驱动器名字  // GDI_VOLUMESERIALNUMBER 得到驱动器序列号  // GDI_VOLUMEFILESYSTEM 得到驱动器文件系统  // GDI_VOLUMETYPE 得到驱动器类型  // GDI_VOLUMESIZE 得到驱动器总大小  // GDI_VOLUMEFREESIZE 得到驱动器剩余大小  //返回值:CString型,所要得到的驱动器信息的字符串表达  //例子:得到C盘的名字GetDriverInfomation('C',GDI_VOLUMENAME)  ************************************************************/  #define GDI_VOLUMENAME 0  #define GDI_VOLUMESERIALNUMBER 1  #define GDI_VOLUMEFILESYSTEM 2  #define GDI_VOLUMETYPE 3  #define GDI_VOLUMESIZE 4  #define GDI_VOLUMEFREESIZE 5  CString GetDriverInfomation(BYTE bAlpha,int iGTI_TYPE)  {  CString strResult = _T("");
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式