2010-06-21 10 views
8

Ich versuche (mehr oder weniger) ein System eindeutig für Lizenzierungszwecke zu identifizieren. Ich habe für diese Aufgabe die MAC-Adresse des Computer-On-Board-Netzwerkadapters gewählt, da ich sicher sein kann, dass jeder Cmputer, der diese Software ausführt, tatsächlich eine hat, und dies vermeidet eine erneute Aktivierung, wenn z. die Festplatte.Wie bekomme ich zuverlässig die MAC-Adresse des Computers an Bord des Netzwerkadapters?

Ich habe Probleme, den Onboard-Netzwerkadapter jedoch zuverlässig zu identifizieren.

Mit der Managementklasse "Win32_NetworkAdapterConfiguration" kann ich viele MAC-Adressen bekommen, einschließlich der Adresse, die ich mag, aber ich habe keine Möglichkeit gefunden, das Onboard von virtuellen Adaptern zu unterscheiden, die von Windows- oder Virenscannern installiert wurden. Diese Liste scheint jedoch geordnet zu sein. Die MAC-Adresse, die mich interessiert, ist (auf meinem Rechner) vor anderen (echten) Netzwerkadaptern aufgeführt. (Die Liste von Schnittstellenindex bestellt wird.)

Mit NetworkInterface.GetAllNetworkInterfaces(), ich glaube, ich durch Filterung auf .NetworkInterfaceType == NetworkInterfaceType.Ethernet die realen Netzwerkadapter identifizieren, aber diese Liste scheint ungeordnet zu sein (eine zusätzliche Netzwerkkarte erscheint vor dem onboards eins).

Verwenden Sie zuerst die zweite Methode, um eine Liste von echten Netzwerkkarten zu erhalten und dann sortieren sie nach der Reihenfolge der Auftritt in der ersten Liste eine zuverlässige Möglichkeit zur Identifizierung der MAC-Adresse, die ich suche? Kann sich der Schnittstellenindex in der ersten Liste ändern? Ich würde mich freuen, Ihre Gedanken zu hören!

Danke!

S.S .: Ich weiß, dass die MAC-Adresse ziemlich leicht geändert werden kann, aber ich kann damit leben. Ich kann nicht damit leben, dass der Kunde die Software nach dem Einstecken eines WLAN-Sticks nicht benutzen kann =)

+0

Warum nicht alle MAC-Adressen von Interface-Typ-Ethernet zwischenspeichern? –

+0

@rdkleine: Dies würde die Aktivierung unterbrechen, wenn ein anderer Netzwerkadapter hinzugefügt wird. – Jens

+0

Sie können alle Adapter mit allen zwischengespeicherten vergleichen. Ein Paar ist genug, oder? –

Antwort

10

Eine eher Low-Tech-Lösung wäre es, die netstat command aufzurufen und nach der MAC-Adresse des Adapters zu suchen, der einen gültigen hat IP Adresse. Ich habe nie gesehen, dass der Netstat-Befehl auf einer Maschine fehlschlägt, während ich gesehen habe, dass WMI unzählige Male unerwartete Ergebnisse liefert.

In jedem Fall habe ich zuvor ein ähnliches Aktivierungssystem durchgeführt und die MAC-Adresse als Identifikationsschlüssel verwendet. Am Ende war es mehr Ärger als es wert war - sowohl für mich als auch für den Kunden! Was ich als weitaus bessere Balance und weniger Aufwand empfand, war, dass sich der Benutzer bei der ersten Installation der Software "anmeldete". Mit der Einwilligung des Benutzers können Sie eine Identifizierung wie beispielsweise die MAC-Adresse an den Server senden.

Dann müssen Sie Ihre Aktivierungsdatenbank nur regelmäßig auf Beweise für größere Lizenzverletzungen überprüfen und die Schlüssel bei Bedarf deaktivieren. Als ein Kunde, der Produktaktivierung hasst, und einen ISV, der Softwarepiraterie hasst, kann ich beide Seiten des Arguments sehen und auf diese Weise vermeiden, den Kunden in die unbequeme Position zu versetzen, Sie zu überzeugen, dass sie legitim sind, wenn etwas (unvermeidlich) passiert falsch.

Nur um ein paar Gründe zu nennen, warum die MAC-Identifikation nicht funktioniert ... Ich benutze zwei NICs (verkabelt und kabellos) in meinem Laptop, je nachdem ob ich bei der Arbeit oder zu Hause bin. Der eine oder andere kann jederzeit deaktiviert sein. Die andere Sache zu beachten ist, dass ich virtuelle Maschinen ziemlich viel benutze und nicht nur, dass sie ihren eigenen MAC bekommen, aber ich könnte jeden MAC spezifizieren, den ich will. Dann werden Sie eines Tages feststellen, dass sich in Ihrer Datenbank 100 Personen mit einem MAC aller Nullen befinden. :) Nichts ist hier garantiert.

+0

Danke für die Eingabe!Aus dem Grund, den Sie erwähnen, möchte ich den On-Board-Adapter verwenden, auch wenn ein anderer Adapter eine IP-Adresse hat und der On-Board-Adapter keinen hat. Guter Punkt mit den VMs, aber ich denke, das wäre kein großes Problem mit unseren Kunden ... Das wird wieder kommen und mich beißen. =) – Jens

1

Sie sollten einige andere Eigenschaften von WMI zusätzlich zur MAC-Adresse berücksichtigen.

Die Vorgehensweise bei der Windows-Produktaktivierung besteht darin, Eigenschaften wie die MAC-Adresse (sowie andere identifizierende Informationen zur Karte selbst, z. B. PCI-Herstellerinformationen) sowie einige allgemeine Geräteeigenschaften (HDD) zu prüfen Controller, Bildschirmadapter) und begründen die Notwendigkeit einer Reaktivierung bei bestimmten Schwellenwerten. Wenn sich zu viele dieser Dinge ändern, ist eine Reaktivierung erforderlich.

Hier ist ein großer Artikel über das Thema, und Sie sollten etwas zu essen geben zum Nachdenken darüber, wie gute Eigenschaften zu nähern Wahl für die eigene Lizenzierung/Aktivierung System zu betrachten:

http://aumha.org/win5/a/wpa.php

1

Ihre Hauptanforderung Wenn Um einen PC eindeutig zu identifizieren, schlage ich vor, dass Sie einen Blick auf this question werfen. Die akzeptierte Antwort Gespräche über eine Lösung sowie die Gefahren der Verwendung der MAC-Adresse Kennung Ansatz

hoffe, das hilft

1

Um Network Interface Details in .NET zugreifen, beziehen sich auf die NetworkInterface.GetPhysicalAddress Methode innerhalb des System.Net.NetworkInformation Namespace.

Die Verwendung ist detailed on MSDN.

Ich würde mich definitiv auf the link Ryan has provided in Bezug auf eine MAC-Adresse für die Identifizierung beziehen.

Verwandte Themen