「C Sharpの基礎 - デバイス情報」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
(ページの作成:「== 概要 == PCのデバイス情報には、以下に示すようなものがある。<br> * CPU *: 種類、速度、コア数 * メモリ *: 容量、種類、速度 * ストレージ *: 種類(HDD / SSD)、容量 * グラフィックカード *: モデル、VRAM容量 * マザーボード *: モデル、チップセット <br> * PCにインストールされているソフトウェア情報 *: OS (種類、バージョン) *: インストールされたドライ…」)
 
60行目: 60行目:
  using System.Linq;
  using System.Linq;
  using System.Net.NetworkInformation;
  using System.Net.NetworkInformation;
using System.Net.Sockets;
   
   
  namespace GetWiredMACAddress;
  namespace GetWiredMACAddress;
68行目: 69行目:
     {
     {
       try {
       try {
          // 全てのネットワークインターフェースを取得
          foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) {
          var nics = NetworkInterface.GetAllNetworkInterfaces();
            // 稼働中のイーサネット (有線LAN) インターフェースの情報を検索
            if (nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet &&
                nic.OperationalStatus == OperationalStatus.Up) {
   
   
          // 稼働中の有線LANインターフェースを検索
                Console.WriteLine($"ネットワークアダプタ: {nic.Description}");
          var wiredNic = nics.FirstOrDefault(nic =>
                Console.WriteLine($"アダプタの種類: {nic.NetworkInterfaceType}");
                                              nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet &&
                                               nic.OperationalStatus == OperationalStatus.Up);
                // 稼働中の有線LANのMACアドレスを取得して文字列形式に変換
 
                // 表示形式は、16進数の大文字 (AA-BB-CC-DD-EE-FF)
            if (wiredNic != null) {
                PhysicalAddress mac = nic.GetPhysicalAddress();
              // 稼働中の有線LANのMACアドレスを取得
                string macAddress = BitConverter.ToString(mac.GetAddressBytes()).Replace("-", ":");
              var address = wiredNic.GetPhysicalAddress();
                Console.WriteLine($"MACアドレス: {macAddress}");
              var bytes = address.GetAddressBytes();
                // 稼働中の有線LANのIPアドレスを取得
                var ipProperties = nic.GetIPProperties();
                // 稼働中の有線LANのIPv4アドレスを取得
                var ipv4Address = ipProperties.UnicastAddresses
                                               .FirstOrDefault(addr => addr.Address.AddressFamily == AddressFamily.InterNetwork);
                if (ipv4Address != null) {
                  Console.WriteLine($"IPv4アドレス: {ipv4Address.Address}");
                }
                else {
                  Console.WriteLine("IPv4アドレスが見つかりません。");
                }
   
   
              // 稼働中の有線LANのMACアドレスを文字列形式に変換
                // 稼働中の有線LANのIPv6アドレスを取得
              // 表示形式は、16進数の大文字 (AA-BB-CC-DD-EE-FF)
                var ipv6Addresses = ipProperties.UnicastAddresses
              var macAddress = string.Join("-", bytes.Select(b => b.ToString("X2")));
                                                .Where(addr => addr.Address.AddressFamily == AddressFamily.InterNetworkV6)
                                                .Select(addr => addr.Address)
                                                .ToList();
   
   
              // 稼働中の有線LANのMACアドレスを表示
                if (ipv6Addresses.Any()) {
              Console.WriteLine($"有線LANのMACアドレス: {macAddress}");
                  Console.WriteLine("IPv6アドレス:");
            }
                  foreach (var ipv6 in ipv6Addresses) {
            else {
                      Console.WriteLine($"{ipv6}");
                Console.WriteLine("有線LANインターフェースが見つかりませんでした。");
                  }
            }
                }
        }
                else {
        catch (Exception ex) {
                  Console.WriteLine("IPv6アドレスが見つかりません。");
            Console.WriteLine($"エラーが発生しました: {ex.Message}");
                }
        }
            }
          }
      }
      catch (Exception ex) {
          Console.WriteLine($"エラーが発生しました: {ex.Message}");
      }
     }
     }
  }
  }
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== 無線LAN ====
==== 無線LAN ====
以下の例では、無線LANのMACアドレスを取得している。<br>
以下の例では、無線LANのMACアドレスを取得している。<br>

2024年8月21日 (水) 04:56時点における版

概要

PCのデバイス情報には、以下に示すようなものがある。

  • CPU
    種類、速度、コア数
  • メモリ
    容量、種類、速度
  • ストレージ
    種類(HDD / SSD)、容量
  • グラフィックカード
    モデル、VRAM容量
  • マザーボード
    モデル、チップセット


  • PCにインストールされているソフトウェア情報
    OS (種類、バージョン)
    インストールされたドライバ
    インストールされたアプリケーション


  • ネットワーク情報
    IPアドレス
    MACアドレス
    ネットワークアダプタの種類


  • 周辺機器情報
    接続されたモニタ
    プリンタ
    その他のUSBデバイス


デバイス情報を取得することのメリットを以下に示す。

  • アプリケーションのパフォーマンス最適化
    ハードウェア情報に基づいて処理を調整できる。
  • トラブルシューティング
    システム情報を使って問題の原因特定が容易になる。
  • ユーザエクスペリエンスの向上
    デバイスに適したUIや機能を提供できる。
  • セキュリティ強化
    デバイス固有の情報を認証に利用できる。


また、デバイス情報を取得するにあたり、以下に示すようなデメリットも存在する。

  • プライバシーの懸念
    ユーザの個人情報を収集する可能性がある。
  • セキュリティリスク
    悪用される可能性のある情報を取得する。
  • 互換性の問題
    OSやハードウェアの変更により、取得方法が変わる可能性がある。
  • パフォーマンスへの影響
    頻繁な情報取得はシステムに負荷をかける可能性がある。



ネットワークインターフェース

有線LAN

以下の例では、有線LANのMACアドレスを取得している。

  1. まず、全てのネットワークインターフェースを取得する。
  2. 有線LANインターフェース (Ethernet) を検索して、稼働中のインターフェースが存在するかどうかを確認する。
  3. 存在する場合、そのインターフェースのMACアドレスを取得して表示する。


 using System;
 using System.Linq;
 using System.Net.NetworkInformation;
 using System.Net.Sockets;
 
 namespace GetWiredMACAddress;
 
 class Program
 {
    public static void Main()
    {
       try {
          foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) {
             // 稼働中のイーサネット (有線LAN) インターフェースの情報を検索
             if (nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet &&
                 nic.OperationalStatus == OperationalStatus.Up) {
 
                Console.WriteLine($"ネットワークアダプタ: {nic.Description}");
                Console.WriteLine($"アダプタの種類: {nic.NetworkInterfaceType}");
 
                // 稼働中の有線LANのMACアドレスを取得して文字列形式に変換
                // 表示形式は、16進数の大文字 (AA-BB-CC-DD-EE-FF)
                PhysicalAddress mac = nic.GetPhysicalAddress();
                string macAddress = BitConverter.ToString(mac.GetAddressBytes()).Replace("-", ":");
                Console.WriteLine($"MACアドレス: {macAddress}");
 
                // 稼働中の有線LANのIPアドレスを取得
                var ipProperties = nic.GetIPProperties();
 
                // 稼働中の有線LANのIPv4アドレスを取得
                var ipv4Address = ipProperties.UnicastAddresses
                                              .FirstOrDefault(addr => addr.Address.AddressFamily == AddressFamily.InterNetwork);
 
                if (ipv4Address != null) {
                   Console.WriteLine($"IPv4アドレス: {ipv4Address.Address}");
                }
                else {
                   Console.WriteLine("IPv4アドレスが見つかりません。");
                }
 
                // 稼働中の有線LANのIPv6アドレスを取得
                var ipv6Addresses = ipProperties.UnicastAddresses
                                                .Where(addr => addr.Address.AddressFamily == AddressFamily.InterNetworkV6)
                                                .Select(addr => addr.Address)
                                                .ToList();
 
                if (ipv6Addresses.Any()) {
                   Console.WriteLine("IPv6アドレス:");
                   foreach (var ipv6 in ipv6Addresses) {
                      Console.WriteLine($"{ipv6}");
                   }
                }
                else {
                   Console.WriteLine("IPv6アドレスが見つかりません。");
                }
             }
          }
       }
       catch (Exception ex) {
          Console.WriteLine($"エラーが発生しました: {ex.Message}");
       }
    }
 }


無線LAN

以下の例では、無線LANのMACアドレスを取得している。

  1. まず、全てのネットワークインターフェースを取得する。
  2. 無線LANインターフェース (IEEE802.11) を検索して、稼働中のインターフェースが存在するかどうかを確認する。
  3. 存在する場合、そのインターフェースのMACアドレスを取得して表示する。


 using System;
 using System.Linq;
 using System.Net.NetworkInformation;
 
 class Program
 {
    public static void Main()
    {
       try {
          // 全てのネットワークインターフェースを取得
          var nics = NetworkInterface.GetAllNetworkInterfaces();
 
          // 稼働中の無線LANインターフェースを検索
          var wirelessNic = nics.FirstOrDefault(nic => 
                                                nic.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 &&
                                                nic.OperationalStatus == OperationalStatus.Up);
 
          if (wirelessNic != null) {
             // 稼働中の無線LANのMACアドレスを取得
             var address = wirelessNic.GetPhysicalAddress();
             var bytes = address.GetAddressBytes();
 
             // 稼働中の無線LANのMACアドレスを文字列形式に変換
             // 表示形式は、16進数の大文字 (AA-BB-CC-DD-EE-FF)
             string macAddress = string.Join("-", bytes.Select(b => b.ToString("X2")));
 
             // 稼働中の無線LANのMACアドレスを表示
             Console.WriteLine($"無線LANのMACアドレス: {macAddress}");
          }
          else {
             Console.WriteLine("無線LANインターフェースが見つかりませんでした。");
          }
       }
       catch (Exception ex) {
          Console.WriteLine($"エラーが発生しました: {ex.Message}");
       }
    }
 }