Ethernet Adapeter auslesen



  • Hallo
    Ich versuche den Local Ethernet Adapter aus allen Adaptern heraus zu filtern. Habe dazu folgenden Code geschrieben.

    public string GetMACAddress()
    		{
    			ManagementClass mc = new ManagementClass("Win32_NetworkAdapter");
    			string MACAddress=String.Empty;
    			string Text = String.Empty;
    
    			foreach(ManagementObject mo in mc.GetInstances())
    			{
    //				if(mo.)  // only return mac address from first card
    //				{
    				try
    				{
    					if((bool)mo.GetPropertyValue("Installed")== true)
    					if(mo.GetPropertyValue("AdapterType").ToString().Equals("Ethernet 802.3"))
    					if(!mo.GetPropertyValue("ServiceName").ToString().Equals("PSched"))
    					{
    						MACAddress = mo.GetPropertyValue("MacAddress").ToString();
    						/*Text = mo["AdapterType"].ToString();//Ethernet 802.3
    						Text = mo["AdapterTypeID"].ToString();//0
    						Text = mo["Availability"].ToString();//3-> Running/Full Power
    						Text = mo["Index"].ToString();//1
    						Text = mo["Manufacturer"].ToString();
    						Text = mo["Description"].ToString();
    						Text = mo["ProductName"].ToString();
    						Text = mo["ServiceName"].ToString();*/
    
    					}
    				}
    				catch(Exception p_Ex)
    				{
    						Trace.Assert(false, p_Ex.Message);
    				 }
    
    //				}
    				mo.Dispose();
    			}
    			MACAddress=MACAddress.Replace(":","");
    			return MACAddress;
    		}
    

    Was mir jetzt noch fehlt ist das heraussuchen des Local Adapters. Leider ist der String "Description" abhängig von der Windows Sprachversion.

    Hat mir jemand einen Tipp? Es sind alle Verbesserungsvorschläge wilkommen.

    Gruss Mike



  • hmm dann versuch wenn das so ist die Sprachversion des System rauszubekommen!

    Und mach darauf dann irgendwas Gescheites mittels

    switch/if/if.. else if

    kann ich darauf nur antworten. Aber ich weis jetzt wirklich nicht wenn Ich Dich richtig verstanden habe meinst Du folgende in etwa

    Deutsche WinXP

    /*
                            Text = mo["Beschreibung"].ToString();
    

    Englisches WinXP

    /*
                            Text = mo["Description"].ToString();
    

    Das irritiert mich jetzt aber 😕 sollte das wirklich so sein *skeptisch* bin ich jetzt aber wirklich oder ich habe Dein Problem nicht verstanden.

    Hatte bisher aber noch nix viel mit WMI am Hut!

    mfg



  • hallo

    das Problem ist das

    Text = mo["Description"].ToString();
    

    den string in der jeweiligen Sprache ausgibt und ich kann ja nicht jede Sprache in der Windows ausgeliefert wird per if schleifen oder ähnliches rauspicken.

    Ich frage mich einfach nur ob es da nicht eine sprachunabhängige kennzeichnung gibt die ich auslesen könnte. In der Registry vielleicht aber habe nichts nützliches herausgefunden bis jetzt.

    Gruss Mike



  • vielleicht kannst Du ueber

    mo.SystemProperties;
    

    irgend ein Ding drehen in Sachen Ländereinstellung.

    Ich meine Hardwaretreiber unter Microsoft sind halt auch gesondert
    darauf multilingual hin entwickelt in Sachen Hardware-Infos!!!

    aber such uter den obigen Gesichtspunkt mal mit Google.

    Aber was das Intelisens der IDE unter SystemPrperties scheint
    etwas zu versprechen. Mach da mal ein paar Nachforschungen!!!



  • Kann ja sein darueber laesst sich das Managment-Objekt
    ,bevor man Abfragen macht einstellen!?!



  • aber wie gesagt Treiber werden sicherlich auch länderspezifisch entwickelt,

    das wird dann eben auch seine Konsequenzen haben auch gerade wenn du

    WMI nutzt es seidem ein Treiber ist entwickelt fuer Multikulti.

    Wie man damit aber jetzt umgeht habe ich mom keinen Einfall!

    *grübel* *Kopf kratz*



  • habe auch schon mal im Framework uber so nee

    CultureIno-Klasse druebergelesen!

    ***dazu schreibt MSDN:*Implizites Festlegen der CurrentUICulture-Eigenschaft
    Wenn die CurrentUICulture-Eigenschaft nicht explizit im Anwendungscode festgelegt ist, wird sie standardmäßig beim Start der Anwendung festgelegt. Sie wird durch die GetUserDefaultUILanguage-Funktion in Windows 2000- und Windows XP-MUI-Produkten (Multiple User Interface), bei denen die Endbenutzer die Sprache der Benutzeroberfläche festlegen können, festgelegt. Wenn die Sprache der Benutzeroberfläche nicht festgelegt ist, wird sie durch die Sprache der Systeminstallation bestimmt, d. h. durch die Sprache der Ressourcen des Betriebssystems.

    Thread.CurrentThread.CurrentUICulture = new CultureInfo("de");
    //oder
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE");
    

    und ob das bei dem Problem hilft????

    Hmm aber jezze so 1 und 1 zusammen und nen direkten Einfall will
    mir nicht aus dem Ärmel fallen...



  • aber eines ist bestimmt sicher du musst dann bestimmt auch ueber WMI
    die Treiberdatei der entsprechenden Hardware rausbekommen um da irgenwie noch ne runde Sach drauszumachen. Viielleicht kommt man dann an irgendwelche
    eingebettet Resourcen in den entsprechend Treiber-DLLs ran.

    Um somit eben Infos in entsprechdeer Muttersprache des User zu bekommen.

    Das ist so grob gesehen das was mir plausibel vor Augen schwebt!



  • WMI HardwareInfo etc. ist ja auch irgendwie dann noch ueber die Sprache
    die zumeist bei einer Installation vom Anwender ausgewählt werden muss,

    eben auch noch ne enge Sache an der Registry deren Abgruende ja Tief sind.

    Und somit gehen bestimmt WMI, installiert Hardware/Treiber und Registry
    eng umschlungen die Strasse entlang.

    mfg sclearscreen




Anmelden zum Antworten