C++ ile Unique ID oluşturma

0

C++ ile unique ID oluşturmam gerekiyor, normal de bunu yapabiliyorum fakat çok zor ihtimalde olsa benzerinin oluşabilme ihtimalini düşünerek bu ID yi bilgisayarın ethernet mac adresinden 8-4-4-16 formatında oluşturmam gerek. Acaba bunu yapabilmem mümkün mü ?

iceberg iceberg (1)
4 hafta önce sordu

  • @alattin bu konuda sana yardımcı olur. bu soruyu gördüğünde dönecek farurhenho 4 hafta önce

Toplam 1 Cevap


0

C++ ile şu şekilde MAC adresini bulabilirsin:

#include <stdio.h>
#include <Windows.h>
#include <Iphlpapi.h>
#include <Assert.h>
#pragma comment(lib, "iphlpapi.lib")

char* getMAC();

int main(){ 
  char* pMac = getMAC();
  system("pause");
  free(pMac);
}
char* getMAC() {
  PIP_ADAPTER_INFO AdapterInfo;
  DWORD dwBufLen = sizeof(IP_ADAPTER_INFO);
  char *mac_addr = (char*)malloc(18);

  AdapterInfo = (IP_ADAPTER_INFO *) malloc(sizeof(IP_ADAPTER_INFO));
  if (AdapterInfo == NULL) {
    printf("Error allocating memory needed to call GetAdaptersinfo\n");
    free(mac_addr);
    return NULL; // it is safe to call free(NULL)
  }

  // Make an initial call to GetAdaptersInfo to get the necessary size into the dwBufLen variable
  if (GetAdaptersInfo(AdapterInfo, &dwBufLen) == ERROR_BUFFER_OVERFLOW) {
    free(AdapterInfo);
    AdapterInfo = (IP_ADAPTER_INFO *) malloc(dwBufLen);
    if (AdapterInfo == NULL) {
      printf("Error allocating memory needed to call GetAdaptersinfo\n");
      free(mac_addr);
      return NULL;
    }
  }

  if (GetAdaptersInfo(AdapterInfo, &dwBufLen) == NO_ERROR) {
    // Contains pointer to current adapter info
    PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;
    do {
      // technically should look at pAdapterInfo->AddressLength
      //   and not assume it is 6.
      sprintf(mac_addr, "%02X:%02X:%02X:%02X:%02X:%02X",
        pAdapterInfo->Address[0], pAdapterInfo->Address[1],
        pAdapterInfo->Address[2], pAdapterInfo->Address[3],
        pAdapterInfo->Address[4], pAdapterInfo->Address[5]);
      printf("Address: %s, mac: %s\n", pAdapterInfo->IpAddressList.IpAddress.String, mac_addr);
      // print them all, return the last one.
      // return mac_addr;

      printf("\n");
      pAdapterInfo = pAdapterInfo->Next;        
    } while(pAdapterInfo);                        
  }
  free(AdapterInfo);
  return mac_addr; // caller must free.
}

Kodlar stackoverflow'dan alınmıştır

Ek:

Şununla Guid üret:

UUID newGId;
UuidCreate( &newGId );

Bu sana 8a321ce3-fd60-4b30-8542-85fcb8d9eea0 gibi bir değer verir. Ondan sonra MAC adresini ister buna ilave et, ister farklı şekilde kendi algoritmanı kur.

alattin alattin (10847)
4 hafta önce cevaplandı

  • @iceberg sorunu okudum, mac adresini aldıktan sonra diğer işlemi yapabileceğini düşündüm alattin 3 hafta önce
  • @alattin Hocam teşekkürler. Zaten mac alma guid oluşturma bunlar sıkıntı değil. Sorum da bunların ikisini nasıl birleştireceğimi merak ettiğimi belirttim. Bu yüzden sorum okunmamış diye yazmıştım. Başka yerden araştırıyorum size tekrar teşekkür. iceberg 1 hafta önce

üyelik gerektirir

Cevap yazabilmek için üye girişi yapmalısınız.

Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol