Operations Lab.

Windows 8 の無線 LAN プロファイルを GUI から削除する

leave a comment »

某所で、Windows 8 の無線 LAN プロファイル(接続情報)を GUI で削除する方法がないか話題になっていたので、無理やり GUI から削除できるようにしてみました。はっきり言ってネタです。コマンドを使ったほうが早くて楽です。

WIndows 7 では、コントロールパネルのネットワークと共有センター内に「ワイヤレスネットワークの管理」という項目があり、登録済みの無線 LAN プロファイルを GUI 上で管理できました。不要になったプロファイルの削除などで利用していた方も多いかと思います。

Windows 8 では「ワイヤレスネットワークの管理」は無くなってしまったため、無線 LAN のプロファイルを GUI で統合的に管理することが難しくなりました。新規の Wi-Fi 接続はネットワーク チャームでできますし、接続済みの無線 LAN については、ネットワーク チャームの項目を右クリック(タブレットの場合長押し)することでプロパティの変更などが行えます。但し、削除したい無線プロファイルの無線 LAN が圏外の場合(無線 AP へ接続できない場合)など、削除が行えない場合があります。

無線 LAN プロファイルの削除方法について、Microsoft の Web サイトでは netsh コマンドを使用するよう案内されています。

圏外のプロファイルを削除する
コマンド プロンプトで、次のように入力します。
netsh wlan delete profile name=”ProfileName”

netsh コマンドを使用すれば問題なく削除できますし、普段からコマンド プロンプトを使い慣れている方には何の問題もないかと思いますが、どうしても GUI で削除したいという方がいるかもしれませんので、無理やり GUI 化してみました。

※使用する場合は、自己責任でお願いします

Add-Type -AssemblyName PresentationFramework

[xml]$XAML = @'
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="ワイヤレスネットワークの管理" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="256*" />
            <RowDefinition Height="55*" />
        </Grid.RowDefinitions>
        <ListBox Name="lbxWlanProfile" />
        <Button Content="削除" Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="400,20,0,0" Name="btnDelete" VerticalAlignment="Top" Width="75" />
    </Grid>
</Window>
'@

$xnr = New-Object System.Xml.XmlNodeReader $xaml
$window = [Windows.Markup.XamlReader]::Load($xnr)
$lbxWlanProfile = $window.FindName("lbxWlanProfile")
$btnDelete = $window.FindName("btnDelete")

$loadWlanList = {
    $wlan = netsh wlan show profiles | Select-String -Pattern "すべてのユーザー プロファイル" | %{ $_.ToString().Replace("    すべてのユーザー プロファイル     : ", $null) }
    if($wlan -is [string]) {
        $wlan = @($wlan)
    }
    $lbxWlanProfile.ItemsSource = $wlan
    $lbxWlanProfile.items.Refresh()
}

$deleteWlan = {
    $msg = ""
    $lbxWlanProfile.SelectedItems | %{ $msg += "$_ " }
    if([System.Windows.MessageBox]::Show("$msg を削除してもよろしいですか?","確認",[System.Windows.MessageBoxButton]::OKCancel,[System.Windows.MessageBoxImage]::Warning) -eq [System.Windows.MessageBoxResult]::OK) {
        $lbxWlanProfile.SelectedItems | %{ netsh wlan delete profile "$_" }
    }
    & $loadWlanList
}

$window.add_Loaded($loadWlanList)
$btnDelete.add_Click($deleteWlan)

$window.ShowDialog() | Out-Null

上記の PowerShell スクリプトを実行すると、現在登録されている無線 LAN プロファイルの一覧が表示されます。削除したいプロファイルを選択し「削除」をクリックすると、該当のプロファイルを削除できます。内部で netsh を呼び出して表示と削除を行っているだけのスクリプトです。PowerShell コンソール上に貼り付けて実行する分には問題ないと思いますが、スクリプトファイルとして保存し実行する場合は、PowerShell の実行ポリシーでスクリプトの実行が許可されている必要があります。

正直、netsh コマンドを使用したほうが早いですが、PowerShell を使って簡単な GUI は作成できなくもないです。個人的には C# で書いたほうが(主に画面(デザイン)の作成やイベントハンドラの記述などの面で)楽だっただろうと、書いた後に思いました…。

広告

Written by kazu

2013/03/06 @ 01:01

カテゴリー: PowerShell, Windows Client

Tagged with ,

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。