elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  (Solucionado) Ayuda obtener id de vb a c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Solucionado) Ayuda obtener id de vb a c++  (Leído 1,967 veces)
Cromatico

Desconectado Desconectado

Mensajes: 110


Ver Perfil
(Solucionado) Ayuda obtener id de vb a c++
« en: 26 Junio 2015, 17:53 pm »

Buenas tardes estimados, estoy necesitando convertir esta parte de código que esta en vb.net a c++... La idea es poder hacer la misma función, pero para codeblocks c++...

Código:
 Public Function ProcessorID()
        Dim cpuInfo As String = String.Empty
        Dim temp As String = String.Empty
        Dim mc As ManagementClass = New ManagementClass("Win32_Processor")
        Dim moc As ManagementObjectCollection = mc.GetInstances
        For Each mo As ManagementObject In moc
            If (cpuInfo = String.Empty) Then
                cpuInfo = mo.Properties("ProcessorId").Value.ToString
                ProcessorID = cpuInfo
                Exit Function
            End If
        Next
        ProcessorID = cpuInfo
    End Function

Buscando por internet encontre esto:
Código:
void getPSN(char *PSN)
{
    int varEAX, varEBX, varECX, varEDX;
    char str[9];
    //%eax=1 gives most significant 32 bits in eax
    __asm__ __volatile__ ("cpuid"   : "=a" (varEAX), "=b" (varEBX), "=c" (varECX), "=d" (varEDX) : "a" (1));
    sprintf(str, "%08X", varEAX); //i.e. XXXX-XXXX-xxxx-xxxx-xxxx-xxxx
    sprintf(PSN, "%C%C%C%C-%C%C%C%C", str[0], str[1], str[2], str[3], str[4], str[5], str[6], str[7]);
    //%eax=3 gives least significant 64 bits in edx and ecx [if PN is enabled]
    __asm__ __volatile__ ("cpuid"   : "=a" (varEAX), "=b" (varEBX), "=c" (varECX), "=d" (varEDX) : "a" (3));
    sprintf(str, "%08X", varEDX); //i.e. xxxx-xxxx-XXXX-XXXX-xxxx-xxxx
    sprintf(PSN, "%s-%C%C%C%C-%C%C%C%C", PSN, str[0], str[1], str[2], str[3], str[4], str[5], str[6], str[7]);
    sprintf(str, "%08X", varECX); //i.e. xxxx-xxxx-xxxx-xxxx-XXXX-XXXX
    sprintf(PSN, "%s-%C%C%C%C-%C%C%C%C", PSN, str[0], str[1], str[2], str[3], str[4], str[5], str[6], str[7]);
}

Pero solo me devuelve la última parte del ID... Tienen idea si hay alguna alternativa para C++ que haga lo mismo? Imagino que si pero no estoy buscando bien...

Desde ya gracias!


EDIT: Ya esta, toqueteando como buen novato despues de varios intentos, agregue este bloquesito:

Código:
__asm__ __volatile__ ("cpuid"   : "=a" (varEAX), "=b" (varEBX), "=c" (varECX), "=d" (varEDX) : "a" (1));
    sprintf(str, "%08X", varEDX); //i.e. XXXX-XXXX-xxxx-xxxx-xxxx-xxxx
    sprintf(PSN, "%s-%C%C%C%C-%C%C%C%C", PSN,str[0], str[1], str[2], str[3], str[4], str[5], str[6], str[7]);

Y me trajo la primer parte del ID, ahora lo reacomodo y listo...

No se lo que hice y tampoco quiero saber por ahora JAJAJA, no se nada de asm...
No mentira, si alguien tiene conocimiento, digame que hice.

Saludos y solucionado.


« Última modificación: 26 Junio 2015, 18:10 pm por Cromatico » En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: (Solucionado) Ayuda obtener id de vb a c++
« Respuesta #1 en: 28 Junio 2015, 01:36 am »

No sé si exista una funcion especifica en C++ para obtener el nombre del CPU, pero especifico en Windows hay varias maneras de obtener el nombre: instrucción CPUID, WMI y el registro.

El registro es el menos recomendado, tratar de leer especificas direcciónes del resgitro no es seguro, se debe evitar lo más posible.

Instrucción CPUID: https://en.wikipedia.org/wiki/CPUID
La más detallada información la encontras en los PDFs de intel. CPUID se puede utilizar para obtener cierta información del procesador(es): nombre, nucleos, caracteristicas, etc.

Al menos en VC++ exista una funcion __cpuid que sirve para generar una instruccion cpuid dejando al compilador asunto como optimización y demás, sin usar ensamblador en el código C/C++.





En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] obtener nombre de archivo (solucionado)
Scripting
corax 2 10,993 Último mensaje 23 Junio 2009, 20:29 pm
por corax
[Solucionado] Obtener título de link con WebBrowser
Programación Visual Basic
aaronduran2 3 5,567 Último mensaje 11 Agosto 2009, 15:54 pm
por Novlucker
Obtener mac[Solucionado]
Scripting
---saster--- 2 3,647 Último mensaje 6 Enero 2010, 12:43 pm
por ---saster---
Obtener valores de un DataGridView [SOLUCIONADO]
.NET (C#, VB.NET, ASP)
novalida 4 25,608 Último mensaje 19 Marzo 2010, 16:10 pm
por novalida
{SOLUCIONADO} no consigo obtener dato con _GET
PHP
|Miguel| 4 2,767 Último mensaje 9 Abril 2012, 10:58 am
por |Miguel|
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines