进行Windwos Media Services二次开发时开发机建立远程对象的配置问题
2012-10-22 17:24
316 查看
最近准备做一些Windows Media Services的二次开发,首先自然想到的是找SDK,配置测试环境。期间遇到些问题,搞了好几天算是掌握个大概了。
一、首先是SDK(开发机需要装)。现在已经合并在叫“Windows SDK”的开发包中了。找和你系统对应的就是了。如下面2个:
Microsoft Windows SDK for Windows 7 and .NET Framework 4 Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1
二、服务器端自然要装Windows Media Services。如果是Server 2003,从添加/删除程序里的添加功能组件里就有了。如果是Server 2008 R2,需要另外下载安装:Windows Media Services 2008 for Windows Server 2008 R2。该服务具体的设置就不说了,不是本文重点。
三、参考微软网站上的开发指南,在开发机上编写如下代码连接服务器端进行测试:
这段代码是在开发机上建立一个(连接到WMS服务器的)远程对象,取得当前连接的播放机数量。若客户端和WMS服务都在一台机上,这段代码运行通常都没问题。但现在是引用远程对象,因此需要作一些配置,否则很可能会出现0x800706ba或0x80070005的COM+错误。
四、上述的错误其实关键就是DCOM权限问题。这里讨论开发机和服务器均不在域环境下的情况。若都加入了域,其配置也是类似的。但开发机没加入域,服务器在域环境下的情况我还没法设置成功。要想成功创建远程DCOM对象,需要以下设置:
现假设开发机上的登录账号为账号A ,则服务器上需要有一个和账号A相同登录名和密码的账号B。
将账号B加入到服务器本地用户组中的Distributed COM Users组。
打开服务器管理工具中的“组件服务”,依次打开“组件服务-计算机-我的电脑-DCOM 配置-Windows Media Services”,双击或右键打开属性框,选中“安全”选项卡。在“启动和激活权限”、“访问权限”里加入账号B。(Windows Server 2008 R2中属性框里的选项无法修改的话可以看这里:Windows2008 R2下,DCOM配置里的属性灰色不可用的解决方法)
至此开发机应该已经可以远程创建服务器对象了。但要正常进行类型转换(将创建的object对象强制转换为WMSServer对象),开发机还需注册一下类型库。在命令行下执行:
regsvr32 “C:\Program Files\Reference Assemblies\Microsoft\WindowsMediaServices\v9.6\WMSServerTypeLib.dll”
来注册类型库。注册时可能因为版本问题会注册失败。若失败可以将服务器上的库文件来复制过来注册。默认是在:C:\WINDOWS\system32\windows media\server文件夹下。
后注:据观察和网上的搜索。0x800706ba错误多是根本连接不上服务器上的DCOM组件。可能是服务没开,可能是没相关的登录账号等。而0x80070005则是连上的账号对该DCOM组件来说没有启动、访问权限,需要在“组件服务”里设置一下。
一、首先是SDK(开发机需要装)。现在已经合并在叫“Windows SDK”的开发包中了。找和你系统对应的就是了。如下面2个:
Microsoft Windows SDK for Windows 7 and .NET Framework 4 Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1
二、服务器端自然要装Windows Media Services。如果是Server 2003,从添加/删除程序里的添加功能组件里就有了。如果是Server 2008 R2,需要另外下载安装:Windows Media Services 2008 for Windows Server 2008 R2。该服务具体的设置就不说了,不是本文重点。
三、参考微软网站上的开发指南,在开发机上编写如下代码连接服务器端进行测试:
try { Type tServerType; Guid clsid = new Guid("{845FB959-4279-11D2-BF23-00805FBE84A6}"); WMSServer RemoteServer; // Retrieve the type information from the Windows // Media server running on the remote machine. tServerType = Type.GetTypeFromCLSID(clsid, "YourServerName", true); if (tServerType != null) { // Create an instance of the remote server object locally. RemoteServer = (WMSServer)Activator.CreateInstance(tServerType); AddMessage("当前客户端连接数:" + RemoteServer.Players.Count); } else AddMessage("Cannot create WMSServer"); } catch (COMException comExc) { AddMessage(comExc.Message); } catch (Exception ex) { AddMessage(ex.Message); }
这段代码是在开发机上建立一个(连接到WMS服务器的)远程对象,取得当前连接的播放机数量。若客户端和WMS服务都在一台机上,这段代码运行通常都没问题。但现在是引用远程对象,因此需要作一些配置,否则很可能会出现0x800706ba或0x80070005的COM+错误。
四、上述的错误其实关键就是DCOM权限问题。这里讨论开发机和服务器均不在域环境下的情况。若都加入了域,其配置也是类似的。但开发机没加入域,服务器在域环境下的情况我还没法设置成功。要想成功创建远程DCOM对象,需要以下设置:
现假设开发机上的登录账号为账号A ,则服务器上需要有一个和账号A相同登录名和密码的账号B。
将账号B加入到服务器本地用户组中的Distributed COM Users组。
打开服务器管理工具中的“组件服务”,依次打开“组件服务-计算机-我的电脑-DCOM 配置-Windows Media Services”,双击或右键打开属性框,选中“安全”选项卡。在“启动和激活权限”、“访问权限”里加入账号B。(Windows Server 2008 R2中属性框里的选项无法修改的话可以看这里:Windows2008 R2下,DCOM配置里的属性灰色不可用的解决方法)
至此开发机应该已经可以远程创建服务器对象了。但要正常进行类型转换(将创建的object对象强制转换为WMSServer对象),开发机还需注册一下类型库。在命令行下执行:
regsvr32 “C:\Program Files\Reference Assemblies\Microsoft\WindowsMediaServices\v9.6\WMSServerTypeLib.dll”
来注册类型库。注册时可能因为版本问题会注册失败。若失败可以将服务器上的库文件来复制过来注册。默认是在:C:\WINDOWS\system32\windows media\server文件夹下。
后注:据观察和网上的搜索。0x800706ba错误多是根本连接不上服务器上的DCOM组件。可能是服务没开,可能是没相关的登录账号等。而0x80070005则是连上的账号对该DCOM组件来说没有启动、访问权限,需要在“组件服务”里设置一下。
相关文章推荐
- openfire:Openfire源代码在eclipse中的运行配置 + 与spark结合进行二次开发
- windwos server 2008 R2 突然连不上远程桌面问题
- PyCharm远程开发配置及一些问题的解决方案
- Silverlight4-RIAServices开发记事2-如何解决传输大量对象时的NotFound问题
- windwos7+Eclipse+hadoop2.4.1开发等一系列问题的解决
- windows media services的配置过程中权限问题[点播的时候总要密码]
- 在Windwos8.1下配置PHP开发环境
- windwos server 2008下用visual studio 2005开发碰到的一些问题
- 18.02.10,记录maven开发bos中struts2配置问题,关于如何进行WEB-INF下页面的访问?
- iOS开发工具-如何使用网络封包分析工具Charles,通过配置proxy对http、https、tcp、udp 等协议的请求响应过程交互信息进行分析、判断、解决我们移动开发中的遇到的各种实际问题。
- iOS 开发 https问题使用AFN进行网络请求时做的一些配置
- windows上使用eclipse远程连接hadoop进行程序开发没有权限访问问题
- Linux环境下段错误的产生原因及调试方法小结 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是
- 橄榄山建立的Revit二次开发群264089104,专门讨论Revit和BIM二次开发问题
- 利用百度地图SDK进行开发时申请key和基本配置以及一个小问题
- 远程登陆 的相关问题 (windwos server )
- windows上使用eclipse远程连接hadoop进行程序开发没有权限访问问题
- 解决开发项目中acvitity获取ViewPager中Fragment对象为null不能进行传值的问题
- 移动短信箱二次开发,以及进行Base64转码的问题
- 在建立与服务器的连接时出错。在连接到SQL Server 2005时,在默认的设置不允许进行远程连接