SORU
12 Mayıs 2009, Salı


Güvenilir yöntem C makine'In MAC adresini almak için#

Bir makinenin MAC adresi, çalıştığı işletim sistemi ne olursa olsun C olarak kullanmanın bir yolunu bulmam gerek#. Uygulama XP/Vista yanı sıra yabancı dil varsayılan bu ÖSS ama Windows 7 32/64 bit çalışması gerekecek. Birçok C# komutları ve sorguları OS OS üzerinde çalışmaz. Herhangi bir fikir? "Başlat /Tüm" ama bu çıkış biçimi her makinede farklıdır. çok güvenilir değil çıkış kazıma olmuştur

Teşekkürler

CEVAP
13 EKİM 2009, Salı


Biraz C# ilk operasyonel ağ arabiriminin MAC adresini. döndüren kod NetworkInterface Meclis varsayarsak çalışma zamanı (yani Mono) diğer işletim sistemleri ve bu işletim sistemleri üzerinde çalışacak uygulanır.

Yeni sürüm: geçerli bir MAC adresi olan en hızlı hız ile NİC verir.

/// <summary>
/// Finds the MAC address of the NIC with maximum speed.
/// </summary>
/// <returns>The MAC address.</returns>
private string GetMacAddress()
{
    const int MIN_MAC_ADDR_LENGTH = 12;
    string macAddress = string.Empty;
    long maxSpeed = -1;

    foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
    {
        log.Debug(
            "Found MAC Address: "   nic.GetPhysicalAddress()  
            " Type: "   nic.NetworkInterfaceType);

        string tempMac = nic.GetPhysicalAddress().ToString();
        if (nic.Speed > maxSpeed &&
            !string.IsNullOrEmpty(tempMac) &&
            tempMac.Length >= MIN_MAC_ADDR_LENGTH)
        {
            log.Debug("New Max Speed = "   nic.Speed   ", MAC: "   tempMac);
            maxSpeed = nic.Speed;
            macAddress = tempMac;
        }
    }

    return macAddress;
}

Orijinal Sürümü: sadece döner ilki.

/// <summary>
/// Finds the MAC address of the first operation NIC found.
/// </summary>
/// <returns>The MAC address.</returns>
private string GetMacAddress()
{
    string macAddresses = string.Empty;

    foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
    {
        if (nic.OperationalStatus == OperationalStatus.Up)
        {
            macAddresses  = nic.GetPhysicalAddress().ToString();
            break;
        }
    }

    return macAddresses;
}

Sevmiyorum tek şey bu yaklaşım hakkında eğer Nortel Paket Mini veya VPN bir tür gibi seçilmiş olma potansiyeline sahip bir bağlantı varsa. Söyleyebileceğim kadarıyla, sanal ağ arayüzü bir tür, gerçek fiziksel bir cihazın MAC ayırt etmek yolu yoktur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bethliebert

    bethliebert

    23 EKİM 2008
  • case LianLi

    case LianLi

    28 Mayıs 2010
  • infodirt

    infodirt

    11 Mart 2009