¿Cómo obtiene VC el ID del hardware, la CPU, el hardware, la tarjeta de red, etc.?
/*
* Obtenga la dirección de la primera tarjeta de red activa a través de WMI y llame a CoInitialize() con anticipación para inicializar COM.
*/
{
¿RESULTADO? hRes
hRes? =?CoInitializeSecurity(NULL, -1,?NULL,?NULL,?RPC_C_AUTHN_LEVEL_DEFAULT
RPC_C_IMP_LEVEL_IMPERSONATE,?NULL,?EOAC_NONE,?NULL);
Si? (Falló (hRes))
¿Regresión? _ T(" ");
IWbemLocator? *pLoc? =?NULL
hRes? =?cocreate instancia(CLSID_WBEM locator, 0,?CLSCTX_INPROC_SERVER,?IID_iwbelocator,?(LPVOID *)&pLoc);
Si? (Falló (hRes))
¿Regresión? _ T(" ");
IWbemServices? *pSvc? =?NULL
hRes? =?pLoc-& gt;ConnectServer(_ bstr _ t(L " ROOT \ \ CIM v2)),?NULL,?NULL,?0,
NULL,?0,?0,?& amppSvc);
if?(fail(hRes))
{
pLoc->Release();
¿Regresar? _T(" ");
}
hRes? =?CoSetProxyBlanket(pSvc,?WINNT,?RPC_C_AUTHZ_NONE,
NULL,?RPC_C_AUTHN_LEVEL_CALL, ? RPC_C_IMP_LEVEL_IMPERSONATE, ? NULL, ? EOAC_DEFAULT);
si ? (falló(hRes))
pSvc->; /p>
Regresar? _ T(" ");
IEnumWbemClassObject* ?pEnumerator? =?NULL
hRes? =?pSvc->;ExecQuery(_bstr_t(L) "WQL)),?
_bstr_t(L"SELECT?*?¿Desde dónde?win32_NetworkAdapterConfiguration?Dónde?IPEnabled?=?true"),
WBEM_FLAG_FORWARD_ONLY? |?WBEM_FLAG_RETURN_IMMEDIATELY?
NULO,? & amppEnumerator);
¿Si? (fallido(hRes))
{
pSvc->publish();
pLoc->publish();
¿Devolver? _ T(" ");
}
CString? szMacDirección? =?_ T(" ");
¿Cuándo? (Correcto)
{
IWbemClassObject? *pclsObj? =?NULL
ULONGO? ¿Regresar? =?0;
hRes? =?pEnumerator->;Next(WBEM_INFINITE,?1,?&pclsObj,?&uReturn);
¿Si? (Fail(hRes)?||?!uReturn)
Romper;
¿Variante? vtProp
VariantInit(& vt prop);
¿Si? (Éxito(pclsObj->Get(L"MACAddress ",0,?& ampvtProp,?0,?0)))
{
¿Si? (V _ VT(&vtProp)?==?BSTR)
{
szMacAddress? =?vt prop .bstr val;
variante clear(& vt prop);
pclsObj->Release();
Break; >
}
variante clear(&vt prop);
}
pclsObj->release();
}
pEnumerator->;Publish();
pSvc->;Publish();
pLoc->Publish ();
¿Volver? szMacAddress
}
-Solución-Oh, esa DLL se compiló alrededor de 2002. Parece que ha pasado demasiado tiempo y no debería soportar vsita. ¿Podrías ver si este código es útil? Lo copié:/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *. -?Tipo de byte, código de controlador A-Z(a-z)//Parámetro 2: igti_type? -?Int, el tipo de información de la unidad que se obtendrá // ¿GDI_VOLUMENAME? Obtener el nombre de la unidad // ¿GDI_VOLUMESERIALNUMBER? Obtener el número de serie de la unidad /// ¿GDI_VOLUMEFILESYSTEM? Obtener el sistema de archivos de la unidad // ¿GDI_VOLUMETYPE? Obtener tipo de unidad // ¿GDI_VOLUMESIZE? Obtener el tamaño total de la unidad /// ¿GDI_VOLUMEFREESIZE? Obtenga el tamaño restante de la unidad //Valor de retorno: tipo CString y expresión de cadena de la información de la unidad que se obtendrá //Ejemplo: obtenga el nombre de la unidad C getdriverinformation ('c ',GDI_volumename)* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *. ¿GDI_VOLUMENAME? 0 #definir? ¿GDI_VOLUMESERIALNUMBER? 1#Definición? ¿GDI_VOLUMEFILESYSTEM? 2#Definición? ¿GDI_VOLUMETYPE? 3#Definición? ¿GDI_VOLUMESIZE? 4#Definición? ¿GDI_VOLUMEFREESIZE? ¿Cadena 5C? GetDriverInfomation(byte?balfa,int?iGTI_TYPE){CString? strResultado? =?_ T(" ");