Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2681
  • Last Modified:

detect NIC settings - c#

I need the sample code that i can use to detect the network settings of the NIC.
(speed,type,duplex/half etc)

Any help is greatly appreciated
0
crystalguy2000
Asked:
crystalguy2000
  • 5
  • 4
1 Solution
 
gnoonCommented:
Using Win32_NetworkAdapter Class

Code sample here http://www.codeproject.com/csharp/NetworkMonitorl.asp
Code reference here http://msdn2.microsoft.com/en-us/library/Aa394216.aspx
0
 
crystalguy2000Author Commented:
The type or namespace name 'NetworkAdapter' could not be found (are you missing a using directive or an assembly reference?)      

have references to system.management and

using System.Net.NetworkInformation and
using System.Net

any suggestions?
0
 
gnoonCommented:
It's not a class of .NET, but a class of Windows Management Instrumentation (WMI) developed by Distributed Management Task Force (DMTF) represents a network adapter of a computer running a Windows operating system (as in the microsoft link above).

Below is its properties and how to query a property from computer using ManagementObjectSearcher (snippet from links above).
class Win32_NetworkAdapter : CIM_NetworkAdapter
{
  string AdapterType;
  uint16 AdapterTypeID;
  boolean AutoSense;
  uint16 Availability;
  string Caption;
  uint32 ConfigManagerErrorCode;
  boolean ConfigManagerUserConfig;
  string CreationClassName;
  string Description;
  string DeviceID;
  boolean ErrorCleared;
  string ErrorDescription;
  string GUID;
  uint32 Index;
  datetime InstallDate;
  boolean Installed;
  uint32 InterfaceIndex;
  uint32 LastErrorCode;
  string MACAddress;
  string Manufacturer;
  uint32 MaxNumberControlled;
  uint64 MaxSpeed;
  string Name;
  string NetConnectionID;
  uint16 NetConnectionStatus;
  boolean NetEnabled;
  string NetworkAddresses[];
  string PermanentAddress;
  boolean PhysicalAdapter;
  string PNPDeviceID;
  uint16 PowerManagementCapabilities[];
  boolean PowerManagementSupported;
  string ProductName;
  string ServiceName;
  uint64 Speed;
  string Status;
  uint16 StatusInfo;
  string SystemCreationClassName;
  string SystemName;
  datetime TimeOfLastReset;
};
 
// read informations of all network adapters
ManagementObjectSearcher searcher = new 
    ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter");
ManagementObjectCollection adapterObjects = searcher.Get();
foreach (ManagementObject adapterObject in adapterObjects)
{
    string adapterName    =    adapterObject["Name"];
    string sdapterType    =    adapterObject["AdapterType"];
    ...
}

Open in new window

0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
crystalguy2000Author Commented:
how would i do that using c#?
0
 
gnoonCommented:
See at the end of code above.
0
 
crystalguy2000Author Commented:
THat did not work.

The type or namespace name 'NetworkAdapter' could not be found (are you missing a using directive or an assembly reference?)      

have references to system.management and

using System.Net.NetworkInformation and
using System.Net

any suggestions?
0
 
crystalguy2000Author Commented:
I tried to paste the code and compiiled.
It complains of some missing namespace..
0
 
gnoonCommented:
There's a bit syntax error in code above about type cast.
This code works on my computer.

However, some properties, e.g. speedduplex, may be not populated because manufacturer driver does not make the information available. You may try to check if they're available in the registry under

HKLM\System\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
using System;
using System.Management;
 
class MyNetworkAdapters
{
	public static void Main() 
	{
		// read informations of all network adapters
		ManagementObjectSearcher searcher = new 
			ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter");
		ManagementObjectCollection adapterObjects = searcher.Get();
		foreach (ManagementObject adapterObject in adapterObjects)
		{
			string adapterName = (string)adapterObject["Name"];
			string adapterType = (string)adapterObject["AdapterType"];
			UInt16 connectionStatus = Convert.ToUInt16(adapterObject["NetConnectionStatus"]);
			Console.WriteLine("{0} : {1} ({2})",adapterName, adapterType, connectionStatus);
		}
		Console.Read();
	}
}

Open in new window

0
 
crystalguy2000Author Commented:
thanks..this one works...But as you said the speed was not populated.
But i think that should suffice for my research.
0
 
Computer101Commented:
Forced accept.

Computer101
EE Admin
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

  • 5
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now