素敵なおひげですね

PowerShellを中心に気分で書いているブログです。

(IT管理者向け)Wi-Fiセンサーをいろいろな方法で殺す

最初に言っておきます。私はこのWi-Fiセンサーが最高に嫌いです。
まだ実害を被ってはいないもののIT管理者的な立場からするとこの機能に対しては恨み言しか出ません。
なので本エントリでは色々な方法でこの機能を殺すための方法を紹介しようと思います。

Wi-Fiセンサーとは何ぞや的な話は以下の記事を見てください。

www.atmarkit.co.jp

また、本エントリの元ネタは以下の記事になります。

blogs.technet.com

注意事項

本エントリで紹介する方法ですが、仮想環境で設定がなされるところまでは確認したのですが実機の環境を用意できず検証しきれませんでした。
このため実環境ではうまく動作しない可能性があります。
もし実環境で動作しない様であれば教えて頂けると助かります。

1.ローカルマシンの設定を変えて殺す

先ずはローカルマシンのレジストリを変更することで設定を変えることができます。
PowerShellから以下のコマンドを打てばOKです。

Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\WcmSvc\wifinetworkmanager\config -Name AutoConnectAllowedOEM -Value 0 -Type Dword

2.PowerShellから独自のポリシーを設定して殺す

次にドメイン環境であればグループポリシーを設定して設定を変えることを強制できます。
全くもって理由は不明で、正直ふざけるのも大概にしろよって気分なのですが、Wi-Fiセンサーを制御するポリシーのadmx/admlファイルが用意されておらず、独自のグループポリシー設定をしなければなりません。

独自のポリシー設定はGPMC Class Libraryを使ってSet-GPRegistryValueコマンドレットから以下の様に設定することができます。

# 新規にポリシーを作って設定する例。
# 既存のポリシーに設定を追加する場合は、New-GPOの部分をコメントアウトしてください。
Import-Module grouppolicy
$GPName = "Wi-Fiセンサーを殺すやーつ"
New-GPO -Name $GPName
Set-GPRegistryValue -Name $GPName -Key HKLM\SOFTWARE\Microsoft\WcmSvc\wifinetworkmanager\config -ValueName AutoConnectAllowedOEM -Type Dword -Value 0

設定後、GPMCから設定した結果を見るとこんな感じになります。

f:id:stknohg:20150824184323p:plain

あとは任意のPCにポリシーを適用させて設定を強制させてください。

尚、PowerShellからグループポリシーを扱う方法については以下のエントリを参考にしてください。

stknohg.hatenablog.jp

3.自分でadmx/admlファイルを作って殺す

2.の手順の発展系です。
Set-GPRegistryValueを使って設定した独自のポリシーは先の例の様にGPMCで見ると生のレジストリ設定が見える状態となります。 これでも十分にWi-Fiセンサーを殺すことはできますが、独自にadmx/admlファイルを作ることでGPMCのGUIWi-Fiセンサーを殺す設定を増やし、設定内容を間違いにくくすることができます。

ただ、いずれは公式にWi-Fiセンサーの設定に対するadmx/admlファイルが出来るかもしれません。 その際はこの手順は忘れてください。

admx/admlファイルの仕様は、

Group Policy ADMX Syntax Reference Guide

に記載されています。

ここの内容を基に既存のadmx/admlファイルの中身を参考にしながら気合で独自のadmx/admlファイル作ります。
実際に作成した例は以下の様な感じになります。

ポリシーを有効にした場合はWi-Fiセンサーを有効に、無効にした場合はWi-Fiセンサーを無効にする様にしています。

configwifisense.admx

<?xml version="1.0" encoding="utf-8"?>
<policyDefinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  revision="1.0" schemaVersion="1.0" 
  xmlns=
  "http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
  <policyNamespaces>
    <target prefix="wifisense" namespace="Contoso.Policies.WiFiSense" />
    <using prefix="products" namespace="Microsoft.Policies.Products" />
  </policyNamespaces>
  <resources minRequiredRevision="1.0" />
  <supportedOn>
    <definitions>
      <!--At least Windows 10 -->
      <definition name="SUPPORTED_Windows_10_0" displayName="$(string.SUPPORTED_Windows_10_0)">
          <or>
              <range ref="products:MicrosoftWindows" minVersionIndex="16"/>
          </or>
      </definition>
    </definitions>
  </supportedOn>
  <categories>
    <category name="Original" displayName="$(string.Original_Policy)"></category>
  </categories>
  <policies>
    <policy name="EnableWiFiSense" class="Machine" displayName="$(string.EnableWiFiSense)" explainText="$(string.EnableWiFiSense_Help)" key="SOFTWARE\Microsoft\WcmSvc\wifinetworkmanager\config" valueName="AutoConnectAllowedOEM">
      <parentCategory ref="Original" />
      <supportedOn ref="wifisense:SUPPORTED_Windows_10_0" />
      <enabledValue>
        <decimal value="1" />
      </enabledValue>
      <disabledValue>
        <decimal value="0" />
      </disabledValue>
    </policy>
  </policies>
</policyDefinitions>

configwifisense.adml

<?xml version="1.0" encoding="utf-8"?> 
<policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns= 
   "http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" 
   revision="1.0" schemaVersion="1.0"> 
  <displayName>Wifi-Sense</displayName> 
  <description>Configurations for Wifi-Sense</description> 
  <resources> 
    <stringTable>
      <string id="SUPPORTED_Windows_10_0">Windows 10 Server、Windows 10、Windows 10 RT 以降</string> 
      <string id="Original_Policy">独自設定ポリシー</string> 
      <string id="EnableWiFiSense">Wi-Fiセンサーを有効にする</string> 
      <string id="EnableWiFiSense_Help">Wi-Fiセンサーを有効にします。</string> 
    </stringTable> 
  </resources> 
</policyDefinitionResources>

これをC:\Windows\PolicyDefinitionsセントラルストアに配置してやることで有効になります。

設定したあとでGPMCを開くと、以下の様に独自の設定が表示される様になります。

f:id:stknohg:20150824184332p:plain

ポリシーの設定画面はこんな感じです。

f:id:stknohg:20150825183215p:plain

f:id:stknohg:20150825183224p:plain

最後に

とりあえずこんな感じでWi-Fiセンサーを殺せます。
元ネタのほうでは無人セットアップ時の設定にも触れていましたが、さすがにそこまでは検証できませんでした。

なお、グループポリシーで制御する場合、今回の更新するレジストリキーは"管理されているポリシー"では無いのでタトゥーイングされる点だけはご注意ください。