Skip to content

A Windows desktop app that lets you save and instantly switch between multiple network configurations (IP, gateway, DNS, DHCP) with presets.

Notifications You must be signed in to change notification settings

fa-yoshinobu/Network_Profile_Switcher

Repository files navigation

Network Profile Switcher

概要

Network Profile Switcherは、Windows環境でネットワーク設定を簡単に切り替えることができるデスクトップアプリケーションです。複数のネットワーク設定(IPアドレス、サブネットマスク、ゲートウェイ、DNSサーバー)をプリセットとして保存し、ワンクリックで切り替えることができます。

主な機能

🔧 ネットワーク設定管理

  • 静的IP設定: 固定IPアドレス、サブネットマスク、ゲートウェイ、DNSサーバーの設定
  • DHCP設定: 自動IP取得設定への切り替え(netsh + WMIフォールバック)
  • プリセット保存: 複数のネットワーク設定を名前付きで保存
  • プリセット編集: 保存された設定の編集・削除・複製
  • プリセット管理: 重複名チェック、自動ソート、自動複製名生成

🖥️ ユーザーインターフェース

  • ネットワークアダプタ一覧: システム上の全ネットワークアダプタを表示
  • プリセット一覧: 保存された設定の一覧表示(名前順自動ソート)
  • 現在の設定表示: 選択されたアダプタの現在のIP設定を表示
  • 視覚的フィードバック: アダプタの状態(有効/無効)を色分け表示
  • アダプタ詳細情報: アダプタの種類、速度、MACアドレスを表示
  • グループ化レイアウト: GroupBoxによる論理的なUIグループ化
  • ステータスバー: アダプタ・プリセット数とキーボードショートカット表示

⌨️ キーボードショートカット

  • Ctrl+N: 新しいプリセット追加
  • Ctrl+E: プリセット編集
  • Delete: プリセット削除
  • F5: アダプタリスト更新
  • Enter: 設定適用

🔒 セキュリティ・管理機能

  • 管理者権限: ネットワーク設定変更のため管理者権限で実行
  • 自動権限昇格: 管理者権限なしで起動時に自動的に権限昇格を提案
  • エラーハンドリング: 包括的な例外処理とユーザーフレンドリーなエラーメッセージ
  • 入力検証: IPアドレス形式チェック、文字数制限(プリセット名50文字、コメント200文字)

🛠️ 改善されたエラー処理

  • LANケーブル未接続対応: アダプタがDown状態の場合の適切な処理と詳細な情報提供
  • 文字化け対策: netshコマンド出力の文字エンコーディング問題を解決
  • アダプタ詳細情報: エラー時にアダプタの詳細情報(速度、MACアドレス等)を表示
  • 自動アダプタ有効化: Down状態のアダプタの自動有効化試行機能

📋 バージョン・ライセンス情報

  • バージョン情報表示: アプリケーションとライブラリのバージョン情報
  • ライセンス情報表示: 使用ライブラリのライセンス詳細表示

システム要件

必須要件

  • OS: Windows 10/11
  • .NET: .NET 6.0 Runtime
  • 権限: 管理者権限(ネットワーク設定変更のため)

推奨要件

  • メモリ: 4GB以上
  • ディスク容量: 100MB以上の空き容量

ダウンロード・インストール

方法1: リリース版のダウンロード(推奨)

1. 最新リリースのダウンロード

  1. Releasesページから最新版をダウンロード
  2. NetworkProfileSwitcher-Release.zipを任意のフォルダに展開

2. 初回実行

  1. 展開したフォルダ内のNetworkProfileSwitcher.exeを右クリック
  2. 「管理者として実行」を選択
  3. 管理者権限の確認ダイアログで「はい」を選択

方法2: ソースコードからビルド

1. 開発環境の準備

# 必要なツール
- Visual Studio 2022 または Visual Studio Code
- .NET 6.0 SDK
- Windows 10/11

2. ソースコードの取得

git clone https://github.com/your-username/Network_Profile_Switcher.git
cd Network_Profile_Switcher

3. ビルド

# デバッグビルド
dotnet build NetworkProfileSwitcher/NetworkProfileSwitcher.csproj

# リリースビルド(推奨)
dotnet build NetworkProfileSwitcher/NetworkProfileSwitcher.csproj --configuration Release

# 単一ファイルビルド(推奨)
dotnet publish -c Release -r win-x64 --self-contained false -p:PublishSingleFile=true

4. 実行

# ビルドされたファイルを実行
NetworkProfileSwitcher/bin/Release/net6.0-windows/NetworkProfileSwitcher.exe

# 管理者権限で実行(推奨)
# アプリケーションを右クリックして「管理者として実行」を選択

使用方法

基本的な使い方

1. プリセットの作成

  1. アプリケーションを起動
  2. 「追加」ボタンをクリック(または Ctrl+N
  3. 以下の情報を入力:
    • 名前: プリセットの識別名(例:「自宅」「会社」「DHCP」)- 最大50文字
    • IPアドレス: 固定IPアドレス(例:192.168.1.100)または「DHCP」
    • サブネットマスク: ネットワークマスク(例:255.255.255.0)
    • ゲートウェイ: デフォルトゲートウェイ(例:192.168.1.1)
    • DNS1: プライマリDNSサーバー(例:8.8.8.8)
    • DNS2: セカンダリDNSサーバー(例:8.8.4.4)
    • コメント: プリセットの説明(任意)- 最大200文字

2. ネットワーク設定の適用

  1. 左側のリストからネットワークアダプタを選択
  2. 右側のリストから適用したいプリセットを選択
  3. 「適用」ボタンをクリック(または Enter
  4. 管理者権限の確認ダイアログで「はい」を選択

3. プリセットの管理

  • 編集: プリセットを選択して「編集」ボタンをクリック(または Ctrl+E
  • 削除: プリセットを選択して「削除」ボタンをクリック(または Delete
  • 複製: プリセットを選択して「複製」ボタンをクリック(自動的に「(コピー)」が付加)

高度な機能

DHCP設定

  • IPアドレス欄に「DHCP」と入力することで自動IP取得設定に切り替え
  • アプリケーションはnetshコマンドを試行し、失敗した場合はWMIを使用
  • より詳細なエラー情報が表示されるようになりました

アダプタ詳細情報

  • エラー発生時にアダプタの詳細情報(速度、MACアドレス等)を表示
  • 物理的な接続状態の確認機能
  • トラブルシューティングの効率化

プリセット管理機能

  • 重複名チェック: 同じ名前のプリセット作成を防止
  • 自動ソート: プリセット一覧が名前順で自動ソート
  • 自動複製名生成: 複製時に自動的に「(コピー)」「(コピー 2)」等を付加
  • 入力検証: IPアドレス形式、文字数制限の自動チェック

トラブルシューティング

よくある問題と解決方法

管理者権限エラー

  • 症状: 「管理者権限が必要です」というエラーが表示される
  • 解決方法:
    • アプリケーションを右クリックして「管理者として実行」を選択
    • または、管理者権限でコマンドプロンプトを開いて実行

LANケーブル未接続エラー

  • 症状: アダプタがDown状態でエラーが発生する
  • 解決方法:
    • LANケーブルが正しく接続されているか確認
    • ネットワークアダプタのドライバーを更新
    • デバイスマネージャーでアダプタの状態を確認
    • 物理的な接続に問題がないか確認

文字化け問題

  • 症状: エラーメッセージが文字化けして表示される
  • 解決方法:
    • アプリケーションは自動的に文字化け対策を実行
    • 複数のエンコーディング方式を自動的に試行
    • 文字化けが発生しても機能に影響しないよう改善済み

DHCP設定エラー

  • 症状: DHCP設定の適用に失敗する
  • 解決方法:
    • アプリケーションはnetshコマンドを試行し、失敗した場合はWMIを使用
    • より詳細なエラー情報が表示されるようになりました
    • アダプタの状態、種類、エラー詳細が含まれます

.NET 6.0 Runtimeエラー

  • 症状: 「.NET 6.0 Runtimeが必要です」というエラーが表示される
  • 解決方法:
    • .NET 6.0 Runtimeが正しくインストールされているか確認
    • システムを再起動
    • アプリケーションを再インストール

アダプタ固有の問題

  • 症状: 特定のアダプタでDHCP設定が失敗する
  • 解決方法:
    • ドライバーの更新: 最新のドライバーに更新
    • 手動設定: コントロールパネルから手動でDHCP設定を確認
    • アダプタの再接続: 物理的にアダプタを再接続
    • 管理者権限の確認: 管理者権限で実行されているか確認

ウイルス判定エラー

  • 症状: ウイルス対策ソフトがアプリケーションをウイルスとして検出する
  • 原因:
    • 管理者権限を要求するアプリケーション
    • ネットワーク設定を変更する機能
    • 未署名の実行ファイル
  • 解決方法:
    • ウイルス対策ソフトの除外設定: アプリケーションのフォルダを除外リストに追加
    • Windows Defenderの除外設定: Windows Defenderの設定で除外フォルダを追加
    • 信頼できるアプリケーションとして追加: ウイルス対策ソフトの設定で信頼リストに追加
    • ソースコードからのビルド: ソースコードをダウンロードして自分でビルド
    • 管理者権限での実行: 管理者権限で実行することで信頼性を向上

ウイルス判定の回避方法

  • 方法1: 自己完結型ビルド
    # 自己完結型ビルド(推奨)
    dotnet publish --configuration Release --self-contained false --runtime win-x64 --output bin/Release/SingleFile
  • 方法2: ソースコードからのビルド
    # ソースコードをダウンロード
    git clone https://github.com/your-username/Network_Profile_Switcher.git
    cd Network_Profile_Switcher/NetworkProfileSwitcher
    # ビルド
    dotnet build --configuration Release
  • 方法3: ウイルス対策ソフトの設定変更
    • Windows Defender: 除外フォルダに追加
    • その他のウイルス対策ソフト: 信頼リストに追加
  • 方法4: 管理者権限での実行
    • アプリケーションを右クリック→「管理者として実行」
    • 管理者権限で実行することで信頼性を向上

予防策:

  • アプリケーションはnetshコマンドを試行し、失敗した場合はWMIを使用
  • より詳細なエラー情報が表示されるようになりました
  • アダプタの状態、種類、エラー詳細が含まれます

技術仕様

使用技術

  • 言語: C# (.NET 6.0)
  • UI: Windows Forms
  • 設定保存: JSON (System.Text.Json 8.0.5)
  • ネットワーク操作: netshコマンド + WMI (System.Management 8.0.0)
  • 文字エンコーディング: System.Text.Encoding.CodePages 8.0.0
  • ビルド: MSBuild

アーキテクチャ

  • MVVMパターン: モデルとビューの分離
  • 静的クラス: NetworkManagerでネットワーク操作を集約
  • イベント駆動: UI操作による非同期処理
  • Null安全性: C# 8.0のNullable Reference Typesを活用
  • エラーハンドリング: DHCP設定の改善とWMIフォールバック機能
  • 文字化け対策: 複数エンコーディング方式の自動試行
  • キーボードショートカット: グローバルキーボードイベント処理

セキュリティ

  • 管理者権限: ネットワーク設定変更のため必要
  • UAC対応: ユーザーアカウント制御との連携
  • エラーハンドリング: 包括的な例外処理
  • 入力検証: IPアドレス形式、文字数制限の自動チェック

コード統計

  • 総行数: 約1,500行
  • メインフォーム: 873行
  • ネットワーク管理: 244行
  • プログラムエントリ: 172行
  • プリセットモデル: 25行

実行ファイル情報

  • メイン実行ファイル: NetworkProfileSwitcher.exe (2.0MB - 単一ファイル)
  • 設定ファイル: NetworkProfileSwitcher.json (プリセット保存用)
  • 最小実行環境: .NET 6.0 Runtimeが必要

ライセンス

このプロジェクトはMITライセンスの下で公開されています。

フィードバック

  • バグ報告
  • 機能要望
  • 改善提案
  • 使用体験の共有

すべてのフィードバックを歓迎いたします!

更新履歴

v1.0.2 (最新)

  • ファイル名変更: プリセットファイル名をpresets.jsonからNetworkProfileSwitcher.jsonに変更
  • UI改善: ボタンサイズ調整、レイアウト最適化、プリセットリストの最大化
  • キーボードショートカット: Ctrl+N(追加)、Ctrl+E(編集)、Delete(削除)、F5(更新)、Enter(適用)
  • プリセット管理強化: 重複名チェック、自動ソート、自動複製名生成
  • 入力検証: プリセット名50文字、コメント200文字の制限
  • ステータスバー: アダプタ・プリセット数とショートカット表示
  • 警告修正: すべてのコンパイル警告を修正し、クリーンなビルドを実現
  • null安全性向上: より安全なnullチェックとパターンマッチングを実装
  • 単一ファイル対応: AppContext.BaseDirectoryを使用して単一ファイルアプリに対応
  • コード品質向上: 不要なusing文の削除とコードの最適化
  • レイアウト改善: UIレイアウトの改善とGroupBoxによる論理的なグループ化

v1.0.1

  • LANケーブル未接続対応: アダプタがDown状態の場合の適切な処理と詳細な情報提供
  • 文字化け対策: netshコマンド出力の文字エンコーディング問題を解決
  • アダプタ詳細情報: エラー時にアダプタの詳細情報(速度、MACアドレス等)を表示
  • 自動アダプタ有効化: Down状態のアダプタの自動有効化試行機能
  • 改善されたエラーメッセージ: より詳細で分かりやすいエラー情報の提供

v1.0.0

  • DHCP設定の改善: 「DHCP is already enabled」エラーの適切な処理
  • WMIフォールバック機能: netsh失敗時の自動WMI使用
  • エラーハンドリング強化: System.Managementアセンブリエラーの詳細対応
  • 実行ファイル最適化: 不要なファイルの削除と最小構成の実現
  • .gitignore設定: 不要ファイルの除外設定を追加
  • README更新: 詳細な使用方法とトラブルシューティングを追加

About

A Windows desktop app that lets you save and instantly switch between multiple network configurations (IP, gateway, DNS, DHCP) with presets.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published