Avatar billede pablopablo Nybegynder
07. marts 2005 - 18:08 Der er 9 kommentarer og
1 løsning

Hent ip og Mac adr via winform

Hejsa...

Kan i fortælle mig hvordan jeg finder ip og mac adresse fra min winform...?

MAC'en burde jeg vel kunne få fra registry? Men jeg kan ikke finde den?

Mvh. PabloPablo
Avatar billede lifo Nybegynder
07. marts 2005 - 18:23 #1
MAC Addresse ved jeg ikke men til at finde ip kan du bruge Dns klassen

IPHostEntry iph =  Dns.GetHostByName(Dns.GetHostName());  //så får du en IPHostEntry

og den har en AddressList som indeholder alle ip'er på din maskine
om du kun har et netkort så er det nok den første du skal have

IPAddress ip = iph.AddressList[0];
Avatar billede mungojerrie Nybegynder
07. marts 2005 - 20:53 #2
du kan finde din netværkskort i registry her:

- Go to "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}". Double click on it to expand the tree. The subkeys are 4-digit numbers, which represent particular network adapters. You should see it starts with 0000, then 0001, 0002, 0003 and so on.

- Find the interface you want by searching for the proper "DriverDesc" key.

Her kan du finde hjælp til at skrive til registreringsdatabasen via C#

http://www.c-sharpcorner.com/1/newmanregistry.asp
Avatar billede lifo Nybegynder
08. marts 2005 - 14:11 #3
en anden mulighed er at bruge iphlpapi.dll

[DllImport("iphlpapi.dll", ExactSpelling=true)]
public static extern int SendARP( int DestIP, int SrcIP, [Out] byte[] pMacAddr, ref int PhyAddrLen );
Avatar billede lifo Nybegynder
08. marts 2005 - 14:15 #4
ups kom til at trykke på send
[DllImport("iphlpapi.dll", ExactSpelling=true)]
public static extern int SendARP( int DestIP, int SrcIP, [Out] byte[] pMacAddr, ref int PhyAddrLen );


IPHostEntry iph =  Dns.GetHostByName(Dns.GetHostName());
IPAddress ip = iph.AddressList[0];    //<---- din IP adresse
byte[] ab = new byte[6];
int len = ab.Length;
int r = SendARP( (int) ip, 0, ab, ref len );
string mac = BitConverter.ToString( ab, 0, 6 ); // <---- din mac adresse
Avatar billede lifo Nybegynder
08. marts 2005 - 14:25 #5
ups igen

en lille fejl
int r = SendARP( (int) ip, 0, ab, ref len );
skal være
int r = SendARP( (int) ip.Address, 0, ab, ref len );
Avatar billede pablopablo Nybegynder
08. marts 2005 - 21:42 #6
er der forskel på hvilken metode jeg bruger, jeg mener er der en af metoderne som altid vil være i stand til at hente de ønksede informationer frem, uansat maskinen...?
Avatar billede pablopablo Nybegynder
10. marts 2005 - 14:34 #7
i hvilket namespace ligger SendARP??
Avatar billede pablopablo Nybegynder
10. marts 2005 - 15:12 #8
nevermind...;)
Avatar billede pablopablo Nybegynder
10. marts 2005 - 15:20 #9
lifo...det eneste jeg ikke kan få til at virke er :

int r = SendARP( (int) ip.Address, 0, ab, ref len );

SendARP, kræver en int, men en ip kan ikke angives som en int men kun som long....???
Avatar billede pablopablo Nybegynder
10. marts 2005 - 15:21 #10
det skulle selvfølgelig have stået....en ip kan kun være en long....ip.Address returnerer en long...
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester