Programación General > ASM (Ensamblador)
Como Obtener El Numero De Serie De La Placa
Juan_mg:
Bueno por lo que vi en un programa utilizan el "smbios dmi" para obtener la informacion de la palca y procesador..
Ahi ta el codigoen VB, si me ayudas, te lo agradeceria en el mucho
Private Sub Form_Load()
Dim objs
Dim obj
Dim WMI
Dim Texto As String
Set WMI = GetObject("WinMgmts:")
Set objs = WMI.InstancesOf("Win32_BaseBoard")
For Each obj In objs
MsgBox obj.SerialNumber
Texto = obj.SerialNumber
Next
End Sub
Eternal Idol:
Te dejo un codigo que obtiene el serial id del motherboard, el Sandra de SiSoftware obtiene el mismo resultado, esta MUY basado en estas paginas porque no suelo usar WMI:
http://www.codeproject.com/system/Using_WM...asp#xx1027622xx
http://msdn.microsoft.com/library/default....al_computer.asp
--- Código: Text --- #define _WIN32_DCOM#include <comdef.h>#include <Wbemidl.h>#pragma comment(lib, "wbemuuid.lib") int main(int argc, char **argv){ CoInitialize(0); if(CoInitializeSecurity(0, -1, 0, 0, RPC_C_AUTHN_LEVEL_PKT, RPC_C_IMP_LEVEL_IMPERSONATE, 0, EOAC_NONE, 0) != S_OK) { return 0; } IWbemLocator * pIWbemLocator = 0; IWbemServices * pWbemServices = 0; IEnumWbemClassObject * pEnumObject = 0; BSTR bstrNamespace = (L"root\\cimv2"); HRESULT hRes = CoCreateInstance (CLSID_WbemAdministrativeLocator, 0, CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, IID_IUnknown, (void**) &pIWbemLocator); if (SUCCEEDED(hRes)) { hRes = pIWbemLocator->ConnectServer(bstrNamespace, 0, 0, 0, 0, 0, 0, &pWbemServices); } BSTR strQuery = (L"Select * from Win32_BaseBoard"); BSTR strQL = (L"WQL"); hRes = pWbemServices->ExecQuery(strQL, strQuery, WBEM_FLAG_RETURN_IMMEDIATELY,0,&pEnumObject); ULONG uCount = 1, uReturned; IWbemClassObject * pClassObject = 0; hRes = pEnumObject->Reset(); hRes = pEnumObject->Next(WBEM_INFINITE,uCount, &pClassObject, &uReturned); VARIANT v; BSTR strClassProp = SysAllocString(L"SerialNumber"); hRes = pClassObject->Get(strClassProp, 0, &v, 0, 0); SysFreeString(strClassProp); _bstr_t bstrPath = &v; char* strPath=(char*)bstrPath; if (SUCCEEDED(hRes)) { MessageBox(0, strPath, "Motherboard Serial ID", 0); } else { MessageBox(0, "Error obteniendo", "Motherboard Serial ID", 0); } VariantClear(&v); pIWbemLocator->Release(); pWbemServices->Release(); pEnumObject->Release(); pClassObject->Release(); CoUninitialize(); return 0;}
Te comento que hay mas clases que Win32_BaseBoard como por ejemplo Win32_BIOS que tambien tiene un serial number pero eso ya te lo dejo a vos, te recomiendo hacer funciones mas genericas para obtener la informacion que quieras.
:devil: :lol: :ph34r: :comp: :hola:
Juan_mg:
Hola, gracias por la respuesta, lo acabo de probar y me bota 2 errores.
e:\program files\microsoft platform sdk\include\dispex.h(947) : error C2061: syntax error : identifier 'DWORD_PTR'
e:\program files\microsoft platform sdk\include\dispex.h(1008) : error C2061: syntax error : identifier 'DWORD_PTR'
me fui al .h y puse
#define DWORD_PTR DWORD *
y me salio otro error:
wbemuuid.lib(wbemprov_i.obj) : fatal error LNK1103: debugging information corrupt; recompile module
Error executing link.exe.
Lo probe en otra maquina y tampoco corria, no podia caragra el lib.
Le añadi el lib que pedia como un archivo al proyecto y me compilo y corrio. Este lib era del vc7, yo lo estoy haciendo en vc6.
Tu en cual lo has compilado???
No se si tambien te salieron estos errores??
Y si los tuvistes como los solucionastes?
Yo tengo instalado el SDK, lo probe en una maquina uqe ni tenia el SDK y no encontraba Wbemidl.h.
Tendria que instalarle algun parche mas??
Muchas gracias por el tiempo que te estas tomando
Eternal Idol:
Lo probe primero con el Visual Studio .NET 2003 y despues con el SDK de Windows 2000, con solo poner cl archivo.cpp compila perfectamente.
:devil:
Navegación
[*] Página Anterior
Ir a la versión completa