Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

obter o número de série do computador em Linux via linguagem C

Pesquisei que na plataforma Windows existe uma API que disponibiliza a função GetComputerName(serialNumber,&serialNumberSize). Sabem se existe alguma função na linguagem C que obtém o número de série do computador numa VM Linux Ubuntu?

2 respostas

Olá, Alberto.

Tudo bem?

No Linux, a obtenção do número de série do computador via linguagem C não é tão direta quanto no Windows, onde existe uma API específica para isso. No entanto, você pode obter essa informação acessando os arquivos do sistema que contêm esses dados, geralmente localizados no diretório /sys/class/dmi/id/.

Um exemplo prático seria ler o conteúdo do arquivo product_serial para obter o número de série do sistema. Aqui está um exemplo simples de como você pode fazer isso em C:

#include <stdio.h>
#include <stdlib.h>

int main() {
    FILE *fp;
    char buffer[256];

    fp = fopen("/sys/class/dmi/id/product_serial", "r");
    if (fp == NULL) {
        perror("Erro ao abrir o arquivo");
        return EXIT_FAILURE;
    }

    if (fgets(buffer, sizeof(buffer), fp) != NULL) {
        printf("Número de Série: %s", buffer);
    } else {
        printf("Não foi possível ler o número de série\n");
    }

    fclose(fp);
    return EXIT_SUCCESS;
}

Esse código tenta abrir o arquivo product_serial e lê o número de série contido nele. É importante verificar se o arquivo existe e se o programa tem permissão para lê-lo, pois em algumas configurações de segurança ou em certos sistemas, esses arquivos podem não estar acessíveis ou podem não existir.

Lembre-se de que esse método pode variar dependendo da configuração específica do hardware e do sistema operacional, então é sempre bom testar em seu ambiente específico.

Espero ter entendido e conseguido ajudar de alguma forma. Qualquer dúvida manda aqui. Bons estudos.

solução!

Renan, implementei conforme sugerido e funcionou. Obrigado pela passagem de conhecimento.