0

ローカル ネットワークでのファイル共有を可能にするデスクトップ アプリを開発する必要があります。このためにlistview、デバイスのホスト名を取得できますが、それらの IP アドレスと MAC がわかるSystem.netと、他のいくつかの MSDN フォーラムに行きました。 (メトロアプリのヘルプが利用可能だった場所)。

ローカル ネットワーク上のすべてのデバイスの IP アドレスと MAC アドレスを取得するにはどうすればよいですか?

DirectoryEntryユーザー名を取得してに表示するために使用していますlistview

   lstLocal.Items.Clear();
        lstLocal.View = View.Details;
        lstLocal.FullRowSelect = true;

        DirectoryEntry root = new DirectoryEntry("WinNT:");

        foreach (DirectoryEntry computers in root.Children)
        {
            foreach (DirectoryEntry computer in computers.Children)
            {
                if (computer.Name != "Schema")
                {
                    ListViewItem item = new ListViewItem(computer.Name);
                   // item.SubItems.Add(computer.Name);

                    //MessageBox.Show(computer.Name);
                    lstLocal.Items.Add(item);

                }

            }
        }

更新:使用しました

                     var hostname = Dns.GetHostName();
                    var ipadd = Dns.GetHostAddresses(hostname);

しかし、アドレスは返されたIPV6にあります。IPV4で必要です。

4

4 に答える 4

0

WMI の mac アドレスを使用して検出できます。「machine」はマシン名です。プロジェクトに System.Management への参照を追加します

ManagementScope scope = new ManagementScope();
var options = new ConnectionOptions();
options.Authentication = AuthenticationLevel.Default;
options.Impersonation = ImpersonationLevel.Impersonate;
options.EnablePrivileges = true;

scope = new ManagementScope(@"\\" + machine + "\\root\\CIMV2", options);
scope.Connect();
SelectQuery query = new SelectQuery("Select * FROM Win32_NetworkAdapterConfiguration");
ManagementObjectSearcher objMOS = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection objMOC = objMOS.Get();
string macAddress = String.Empty;
foreach (ManagementObject objMO in objMOC) {
    object tempMacAddrObj = objMO["MacAddress"];

    if (tempMacAddrObj == null) {
        continue;
    }
    if (macAddress == String.Empty) {
        macAddress = tempMacAddrObj.ToString();
    }
    objMO.Dispose();
}

return macAddress;
于 2016-05-09T06:31:55.680 に答える
0

これを試すことができます:

IP アドレスの場合:

var hostname = Dns.GetHostName();
var ipadd = Dns.GetHostAddresses(hostname); //array will contain ipv4 and ipv6

MAC アドレスの場合:

    public string GetMACAddress()
    {
        NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
        String sMacAddress = string.Empty;
        foreach (NetworkInterface adapter in nics)
        {
            if (sMacAddress == String.Empty)// only return MAC Address from first card  
            {
                IPInterfaceProperties properties = adapter.GetIPProperties();
                sMacAddress = adapter.GetPhysicalAddress().ToString();
            }
        } return sMacAddress;
    }

MAC アドレスの参照:

Macアドレス

于 2014-12-16T09:52:42.637 に答える