08. februar 2008 - 05:26Der er
14 kommentarer og 1 løsning
MAC adresse fra WMI
Hej
Jeg skal have alle de mac adresser der er på PC'en men får kun den første.
Min kode: Function GetMacAddress() As String Dim brugerid As String brugerid = LoginForm1.txtusername.Text Try Dim strMACAddress As String = "" ' ' Create the query, in SQL syntax, to retrieve the properties from ' the active Network Adapter. ' Dim strQuery As String = _ "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True"
' ' Create a ManagementObjectSearcher object passing in the query to run. ' Dim query As ManagementObjectSearcher = New ManagementObjectSearcher(strQuery)
' ' Create a ManagementObjectCollection assigning it the results of the query.
Dim queryCollection As ManagementObjectCollection = query.Get()
' ' Loop through the results extracting the MAC Address. ' Dim mo As ManagementObject
For Each mo In queryCollection strMACAddress = mo("MacAddress").ToString() DatabaseForbindelse("Insert into mac(brugerid,mac) values('" & brugerid & "','" & strMACAddress & "')") 'Exit For Next
Din kode ser rigtigt nok ud. Måske udtrækker den virkelig kun een MAC.
Det kan du jo tjekke efter ved at kigge på query.Count.
Nu har jeg godt nok ikke lige nærlæst dokumentationen på Win32_NetworkAdapterConfiguration, men hvad får du ud hvis du sletter WHERE-delen af din SELECT?
objektet 'macs' i min kodestump er en generisk liste (C#: List<string>, VB.NET: List(Of T))
I foreach loopet tilføjer jeg en adresse af gangen til listen.
Du gør jo også et eller andet i dit foreach loop, men den streng du returnerer bliver sat for hvert loop. Så det er vel faktisk den sidste streng du returnerer.
Hvis du vil have funktionen til at returnere alle MAC adresser ville det give mening at omdefinere funktionen som
Enten skal du loope igennem listen bagefter og sætte dem ind, eller også skal du simpelthen tilføje dem både til listen og databasen i samme hug:
Dim currentAddress As string For Each mo In queryCollection currentAddress = mo("MacAddress").ToString() strMACAddress.Add(currentAddress) 'Tilføj til liste DatabaseForbindelse("Insert into mac(brugerid,mac) values('" & brugerid & "','" & currentAddress & "')") 'Indsæt i DB Next
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.