labunix's blog

labunixのラボUnix

WindowsXPのUPnP機能を無効にする。

 
 
 

■NICのパケットキャプチャ
 WireShark付属のtsharkを使うと以下のような
 60秒に1回、「SSDP(1900/udp)」ポート宛てのパケットが飛びます。

 参考:Games for Windows - LIVE に接続するために
       Windows XP でユニバーサル プラグ アンド プレイ (UPnP) を有効にするには
       (Microsoft SSDP Enables discovery of UPnP devices)
 http://support.microsoft.com/kb/941206

> tshark.exe -D
1. \Device\NPF_..................
> tshark -i 1 -n udp
Capturing on Realtek 10/100/1000 Ethernet NIC                                 (M
icrosoft's Packet Scheduler)
  0.000000  192.168.10.10 -> 239.255.255.250 SSDP 143 M-SEARCH * HTTP/1.1
 60.013809  192.168.10.10 -> 239.255.255.250 SSDP 143 M-SEARCH * HTTP/1.1
120.029683  192.168.10.10 -> 239.255.255.250 SSDP 143 M-SEARCH * HTTP/1.1
180.136796  192.168.10.10 -> 239.255.255.250 SSDP 143 M-SEARCH * HTTP/1.1
240.152086  192.168.10.10 -> 239.255.255.250 SSDP 143 M-SEARCH * HTTP/1.1
300.166289  192.168.10.10 -> 239.255.255.250 SSDP 143 M-SEARCH * HTTP/1.1
360.180787  192.168.10.10 -> 239.255.255.250 SSDP 143 M-SEARCH * HTTP/1.1
420.195582  192.168.10.10 -> 239.255.255.250 SSDP 143 M-SEARCH * HTTP/1.1
480.210033  192.168.10.10 -> 239.255.255.250 SSDP 143 M-SEARCH * HTTP/1.1

> net start | find /i "SSDP"
   SSDP Discovery Service

■サービスを確認する。

> sc getKeyName "SSDP Discovery Service"
[SC] GetServiceKeyName SUCCESS  Name = SSDPSRV

> sc qc SSDPSRV
[SC] GetServiceConfig SUCCESS

SERVICE_NAME: SSDPSRV
        TYPE               : 20  WIN32_SHARE_PROCESS
        START_TYPE         : 4   DEMAND_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : C:\WINDOWS\system32\svchost.exe -k LocalService
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : SSDP Discovery Service
        DEPENDENCIES       : HTTP
        SERVICE_START_NAME : NT AUTHORITY\LocalService

> sc qc SSDPSRV | find "START_TYPE"
        START_TYPE         : 3   DEMAND_START

■サービスの停止

> net stop "SSDP Discovery Service"
SSDP Discovery Service サービスを停止中です.
SSDP Discovery Service サービスは正常に停止されました。

■サービスの無効化

> sc config help | find "start"
 start= 
> sc config SSDPSRV start= disabled
[SC] ChangeServiceConfig SUCCESS
> sc qc SSDPSRV | find "START_TYPE"
        START_TYPE         : 4   DISABLED

> sc queryex SSDPSRV

SERVICE_NAME: SSDPSRV
        TYPE               : 20  WIN32_SHARE_PROCESS
        STATE              : 1  STOPPED
                                (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 0
        FLAGS              :

■レジストリの確認
 ※インストールしたことが無ければこのキー自体が見つからない。
  逆を言うと、これが無いのにサービスが動いているのはおかしい。

> reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\Oc Manager\Subcomponents" | find "upnp"
    upnp        REG_DWORD       0x1
> appwiz.cpl

■「upnp」が「0x1」、つまりインストールされている場合は
 以下を辿ってチェックを外し、アンインストールする。

[Windows コンポーネントの追加と削除]
  [コンポーネント] ウィンドウ
    [ネットワーク サービス] 
      [詳細]
        □[UPnP ユーザー インターフェイス]

■以下のように「0x0」としてアンインストールされた。

> reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\Oc Manager\Subcomponents" | find "upnp"
    upnp        REG_DWORD       0x0

■なお、「プログラムの追加と削除」の画面で表示されるプログラムは以下で見れる。

> reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall" /s | find " DisplayName"