web server to fetch client's machine mac address

前端 未结 3 1770
猫巷女王i
猫巷女王i 2021-01-16 06:40

I\'m trying to build some complicated stuff for an C# winform application being build online and trying to gather some information here and there.I\'ve looked on the web tha

相关标签:
3条回答
  • 2021-01-16 07:09

    As the other responses suggest, getting the IP address may not do what you need. What are you trying to use this information for?

    You might want to try and use the System.Management.ManagementObjectSearcher object to query for this kind of info. I know this can be used to grab the MAC address of each connected network adaptor. This logic would have to be on the client side that could then pass whatever info you needed up to the server.

    It looks like this Google Groups post might do what you are after. Here is the interesting bit:

    using System.Management;
    
    ObjectQuery query = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration"); 
    ManagementObjectCollection queryCollection = query.Get();
    foreach( ManagementObject mo in queryCollection )
    {
         foreach(string s in addresses)
         { 
                Console.WriteLine( "IP Address ‘{0}’", s); 
         }
         foreach(string s in subnets)
         { 
                Console.WriteLine( "IP Subnet ‘{0}’", s); 
         }
    }
    
    0 讨论(0)
  • 2021-01-16 07:21

    You can't get any of that information from a web server, and you should not try. Consider that machines may have multiple IP addresses and multiple MAC addresses, and may be behind a proxy server or Network Address Translation device, or worse.

    IP addresses belong to the network layer, and should generally not be used by the Application layer. If nothing else, it's unlikely that the Network Administrators will consult the Developers when making changes to the network that will invalidate your assumptions.

    0 讨论(0)
  • 2021-01-16 07:28

    No, there's no easy way to do that.

    The MAC address is only resolvable on the same subnet - assuming this isn't a fairly small intranet app, you would not be on the same subnet as your clients.

    In theory, querying the client with remote WMI would work - but the firewall and permission issues are non-trivial. Again, unless you can control all clients - you're not likely to have success here.

    About the only thing you could do is a downloadable app - possibly Flash, Silverlight or ActiveX - that interrogated the local machine for you. I'm not sure if that info would be sandboxed by the browser though.

    My guess is there's an easier way to do what you're trying to do - but you'd need to provide more details on why you want the MAC address.

    0 讨论(0)
提交回复
热议问题