C/Visual C - Numero o volumen del disco o infromacion del CPU

 
Vista:

Numero o volumen del disco o infromacion del CPU

Publicado por Cindy (1 intervención) el 07/05/2003 23:36:07
Hola,
Como se le hace para que un programa cheque ya sea el volumen del disco duro o algun dato del CPU con el fin de que este solo corra en una determinada maquina?
//Agradezco cualquier ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Verificación de hardware para ejecución de programas

Publicado por Alejandro (1153 intervenciones) el 02/06/2025 17:22:29
Cindy, para asegurarte de que un programa solo se ejecute en una máquina específica, puedes verificar el volumen del disco duro o datos del CPU utilizando las siguientes técnicas en C/Visual C++:

1. Chequeo del volumen del disco duro:
Puedes utilizar la API de Windows para obtener información sobre el disco duro. Aquí hay un ejemplo de cómo hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <windows.h>
#include <iostream>
 
bool CheckDiskVolume(const std::string& volumeName) {
    DWORD volumeSerialNumber;
    GetVolumeInformationA(volumeName.c_str(), NULL, 0, &volumeSerialNumber, NULL, NULL, NULL, 0);
 
    // Compara el número de serie con el esperado
    const DWORD expectedSerialNumber = 12345678; // Cambia esto al número de serie esperado
    return volumeSerialNumber == expectedSerialNumber;
}
 
int main() {
    if (CheckDiskVolume("C:\\")) {
        std::cout << "El volumen del disco es correcto. El programa puede ejecutarse." << std::endl;
    } else {
        std::cout << "El volumen del disco no coincide. El programa no se ejecutará." << std::endl;
    }
    return 0;
}

2. Chequeo de datos del CPU:
Para obtener información sobre el CPU, puedes usar la función `GetSystemInfo` de la API de Windows. Aquí tienes un ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <windows.h>
#include <iostream>
 
bool CheckCPUInfo() {
    SYSTEM_INFO sysInfo;
    GetSystemInfo(&sysInfo);
 
    // Compara el tipo de procesador con el esperado
    const DWORD expectedProcessorArchitecture = PROCESSOR_ARCHITECTURE_AMD64; // Cambia esto al tipo esperado
    return sysInfo.wProcessorArchitecture == expectedProcessorArchitecture;
}
 
int main() {
    if (CheckCPUInfo()) {
        std::cout << "La información del CPU es correcta. El programa puede ejecutarse." << std::endl;
    } else {
        std::cout << "La información del CPU no coincide. El programa no se ejecutará." << std::endl;
    }
    return 0;
}

Notas:
- Asegúrate de cambiar los valores esperados en las comparaciones a los que correspondan a la máquina en la que deseas que se ejecute el programa.
- Estos métodos son básicos y pueden ser mejorados con técnicas adicionales de seguridad, como la encriptación de los datos de verificación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar