server为了稳定期间,并没有加载upnp模块,而且在其系统文件里并没有upnp的相关文件,这给需要upnp的软件带来很大的麻烦,虽然端口映射是个好办法,但大规模的网络环境中,一个一个去端口映射似乎是件很麻烦的事,由于我在网上并没有发现相关的文章。所以只能动手研究。。万幸的是,总算研究成功了。
注:因为刚给server加载上模块,并没有烤机测试,所以未能发现相关兼容问题。
思想:upnp是几个文件组成的服务,既然server没有这几个文件,那么我们通过移植加载即可使server拥有upnp功能。
实验环境:
WindowsServer2003,DatacenterMCCEditionSP1
WindowsXPMediaCenterEditionSP2
以上系统都安装了最完全的updata。
我们要做的就是把xp的upnp文件加载到server里注册即可。
首先我们要剥离xp内的upnp文件。通过观察,xp的upnp支持需要以下几个文件
netupnp.inf
netupnph.inf
dpnhupnp.dll
ssdpapi.dll
ssdpsrv.dll
udhisapi.dll
upnp.dll
upnphost.dll
upnpui.dll
upnpcont.exe
注:以上文件是我通过对比xp与server的windows组件程序得来的。
步骤如下:
1。注册SSDPSRV、upnphost服务
SSDPDiscoveryService:启动您家庭网络上的UPnP设备的发现。
UniversalPlugandPlayDeviceHost:为主持通用即插即用设备提供支持。
右键点击剥离出来的2个inf文件,点击“安装”,此时需要剥离出来的dll文件与exe文件。此时,服务已经注册好,可以在“服务管理器”看到。
注册启动服务需要的用户,
打开注册表。查找以下键值
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\SvcHost
在右边的列表中找到LocalService,双击在其后面添加
SSDPSRV
upnphost
2。安装windows组件。
打开系统盘的system/inf文件夹,找到netoc.inf,打开
在[OptionalComponents]添加以下字段。
UPNP
BEACON
Iprip
保存退出。
打开windows组件,打开网络服务。
钩选:internet网关设备发现与用户upnp,其中需要剥离的文件。
到现在所有的文件已经加载完,重启。
重启后,启动以上2个服务,设置成自动。
打开网路邻居,已经可以看到发现了upnp设备。
进过测试,pplive,BT都可以顺利的发现upnp设备,只有骡子不能发现upnp设备。