tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von DrSoong
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
2801
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von DrSoong
    DrSoong DrSoong ist offline Iss was, Doc!
    tutorials.de Premium-User
    Registriert seit
    Jul 2003
    Ort
    Dem Zentrum meiner Welt
    Beiträge
    1.836
    Blog-Einträge
    85
    Grüß euch,

    der Titel sagt eigentlich schon alles. Ich hab mehrere PCs im Netzwerk und für WakeOnLAN brauch ich ja die MAC der Netzwerkkarte. Da sich die PCs ab und zu ändern (Tausch wegen Defekt) will ich keine allgemeine Liste haben sondern mir ab und zu die PCs suchen und in meine Verwaltung aufnehmen.

    Der Weg über die Konsole mittels getmac ist momentan der gangbare Weg für mich, irgendwie sollte es aber doch eine .NET-Alternative dazu geben. Hab schon in Netz gegraben aber nur die Konsolengeschichten gefunden.


    Der Doc!
     
    A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
    B: Die Scrollbar da rechts ist dir schon mal aufgefallen?

  2. #2
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Hi Doc!

    Würde mit VB.net wohl auch aus auslesen der Ausgabe vom arp Befehl hinauslaufen. Aber, in dem Netzwerk hast du doch sicher einen Router, oder? Hat der in seiner Verwaltungsoberfläche eine "Device List"? Dort sollten dann auch die MAC Adressen schön gelistet sein. Da der Router auch ziemlich sicher alle Rechner kennt, wäre diese Liste auch am ehesten vollständig.

    lg, Alex
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  3. #3
    Avatar von Navy
    Navy Navy ist offline Freiwillige Serverwehr
    tutorials.de Administrator
    Registriert seit
    Jul 2003
    Ort
    Montreal (Quebec)
    Beiträge
    1.667
    Stichwort ARP — dafür gibt es doch bestimmt eine VB-Lib (vorsichtig geraten)
     
    Navy

    --
    Echtzeithilfe unter irc.tutorials.de #tutorials.de

  4. #4
    Avatar von DrSoong
    DrSoong DrSoong ist offline Iss was, Doc!
    tutorials.de Premium-User
    Registriert seit
    Jul 2003
    Ort
    Dem Zentrum meiner Welt
    Beiträge
    1.836
    Blog-Einträge
    85
    Das Netzwerk ist unser dienstliches Netzwerk, da ist nichts mit Routern bzw. dem Zugriff drauf. Ich hab da zwar (bedingte) Admin-Rechte, d.h. ich kann, wenn möglich, die MAC-Adresse auslesen, auf diverse Listen, die Logon-Server usw. hab ich aber keinen Zugriff.

    ARP hab ich ja schon als DOS-Applikation gefunden, unter VB6 hab ich auch einen Code gefunden. Den nach .NET zu portieren ist aber eine aufwändige Arbeit, daher erst die .NET-Frage.

    Ich werd aber mal schauen, ob es eine ARL-Lib gibt, danke schon mal für eure Hinweise.


    Der Doc!
     
    A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
    B: Die Scrollbar da rechts ist dir schon mal aufgefallen?

  5. #5
    Avatar von DrSoong
    DrSoong DrSoong ist offline Iss was, Doc!
    tutorials.de Premium-User
    Registriert seit
    Jul 2003
    Ort
    Dem Zentrum meiner Welt
    Beiträge
    1.836
    Blog-Einträge
    85
    So, nach langen, mühevollem Graben im Netz (ich seh aus, wie ein Ferkel ) hab ich etwas gefunden, das auf WMI basiert. Hab das ganze etwas gestrafft und in ein Funktion gequetscht (die zweite wird für die erste benötigt).
    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
    Public Function funcGetMAC(ByVal sPCName As String) As String
            funcGetMAC = ""
            Try
                Dim mc As New ManagementClass("win32_networkadapter")
                Dim myScope As ManagementScope
     
                myScope = New ManagementScope("\\" & sPCName & "\root\cimv2")
     
                For Each mo As ManagementObject In mc.GetInstances()
     
                    Try
                        If mo("adaptertype").ToString() = "Ethernet 802.3" AndAlso mo("manufacturer").ToString() <> "Microsoft" Then
                            funcGetMAC = funcGetDetails("win32_networkadapterconfiguration.Index", mo("DeviceID").ToString(), sPCName)
                        End If
                    Catch
                    End Try
                Next mo
            Catch exc As Exception
                MessageBox.Show(exc.Message)
            End Try
    End Function
     
    Private Function funcGetDetails(ByVal WmiClause As String, ByVal Instance As String, ByVal sPCName As String) As String
            Dim mo As New ManagementObject(WmiClause & "='" & Instance & "'")
            Dim myScope As ManagementScope
            funcGetDetails = ""
     
            myScope = New ManagementScope("\\" & sPCName & "\root\cimv2")
     
            mo.Scope = myScope
            mo.Get()
     
            Try
                funcGetDetails = mo("macaddress").ToString()
            Catch
            End Try
     
    End Function

    Der Aufruf erfolgt über
    Code vb:
    1
    
    MAC = funcGetMAC(Computername)

    Wie gesagt, ist nicht mein Code, hab ihn nur gestrafft, wenn ihn jemand braucht.


    Der Doc!
    Triple-Axe bedankt sich. 
    A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
    B: Die Scrollbar da rechts ist dir schon mal aufgefallen?

  6. #6
    Avatar von Razorhawk
    Razorhawk Razorhawk ist offline Webdesigner und MSP
    Registriert seit
    Aug 2002
    Ort
    Berlin
    Beiträge
    1.363
    Hallo,

    ich habe da noch einen Code gefunden für C#.
    Dieser findet die MAC-Adresse allerdings nicht über den Computernamen, sondern über die IP. Funktioniert auch über ARP:

    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    [DllImport("iphlpapi.dll", ExactSpelling = true)]
            public static extern int SendARP(int DestIP, int SrcIP, [Out] byte[] pMacAddr, ref int PhyAddrLen);
     
            /// <summary>
            /// Ermittelt die MAC Adresse eines im Netzwerk befindlichen Computers
            /// </summary>
            /// <param name="ip">Die IP des Netzwerkcomputers</param>
            /// <returns>Die MAC Adresse im string format</returns>
            private string GetMACAdress(IPAddress ip)
            {
                try
                {
                    byte[] ab = new byte[6];
                    int len = ab.Length;
     
                    int r = SendARP((int)ip.Address, 0, ab, ref len);
                    string mac = BitConverter.ToString(ab, 0, 6);
                    
                    return mac;
                }
                catch (Exception)
                {
                    return "MAC not available";
                }
            }

    Quelle: http://dotnet-snippets.de/dns/c-mac-...se-SID905.aspx

    allerdings lässt sich wie schon vorher gegeben auch natürlich über den Computernamen die IP-Adresse herausfinden:

    Code csharp:
    1
    2
    3
    4
    5
    6
    
    String DnsName;
                    DnsName = ###Computername###
                    System.Net.IPHostEntry IHE = System.Net.Dns.Resolve(DnsName);
                    string[] IP = new string[IHE.AddressList.Length];
                    for (int i = 0; i < IHE.AddressList.Length; i++)
                        IP[i] = IHE.AddressList[i].ToString();

    Quelle: http://www.mycsharp.de/wbb2/thread.php?threadid=66986

    auch wenn du schon eine Lösung hast wollte ich diesen nochmal mit anbieten. (der in C# statt VB ist)

    Gruß

    Sebastian
    Geändert von Razorhawk (19.01.10 um 01:14 Uhr)
     
    Sebastian Schütze
    Offizieller
    Microsoft Junior Student Partner
    und Microsoft Partner
    Humboldt Universität zu Berlin

    Email: sebastian.schuetze@studentpartners.de
    Website der MSP: www.studentpartners.de

    Webdesign: Razorstudio
    Website: www.razorstudio.de
    Email: Sebastian.Schuetze@razorstudio.de

Ähnliche Themen

  1. [VB08] Programm auf Rechner im Netzwerk starten
    Von DrSoong im Forum .NET Web und Kommunikation
    Antworten: 1
    Letzter Beitrag: 21.03.10, 19:27
  2. DNS Adresse auslesen
    Von Hiu im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 09.09.05, 11:33
  3. IP - Adresse eines Netzlaufwerkes ermitteln
    Von bastiglasl im Forum .NET Web und Kommunikation
    Antworten: 1
    Letzter Beitrag: 02.09.05, 12:15
  4. Antworten: 1
    Letzter Beitrag: 03.11.04, 10:39
  5. IP Adresse eines WebServers anzeigen
    Von JSchreiber im Forum PHP
    Antworten: 2
    Letzter Beitrag: 29.09.04, 14:34