2015-03-30 48 views
-1

我创建了一个带有代理组件的测试应用程序,它在我的计算机上运行流畅,但是当它移动到平板电脑并执行所有必需设置(regsvr32,icacls)时,它会引发异常。然后我去了并下载了Microsoft Northwind示例,它的行为相同。在我的机器上工作正常,但在另一台平板电脑上工作正常我在这里错过任何东西吗?这是异常,它是转换异常和拒绝访问异常: 无法将类型为'NorthwindRT.DAL.FileWatcher'的COM对象转换为接口类型为'NorthwindRT.DAL.IFileWatcherClass'的类型。此操作失败,因为IID为“{23F40340-AEB1-5774-5705-64488C9BDD3A}”的接口的COM组件上的QueryInterface调用由于以下错误而失败:访问被拒绝。 (来自HRESULT的异常:0x80070005(E_ACCESSDENIED))。 但我在平板电脑上做了与在开发机器上做的相同的事情! 我将所需的文件移动到了正确的目录并启用了对所有应用程序的读取/执行,并使用regsvr32注册了代理。此外,用户可以访问实现dll所在的目录,以便访问被拒绝异常很奇怪。 我做了我的研究关于经纪公司,我正在做的就像可用的文件! 任何想法?我在这里错过了什么吗?我需要做额外的设置吗?我的系统是否缺少任何必需的dll?Brokered Component部署到客户端时不起作用

+0

最后你能解决这个问题吗? – 2015-05-04 16:19:01

回答

0

该应用没有访问msvcr120d.dll 添加“所有应用程序包”到这个DLL,它会解决这个问题。

0

我也在研发代理组件,到目前为止我在开发和部署方面都取得了一些成功。

访问被拒绝。 (来自HRESULT的异常:0x80070005(E_ACCESSDENIED))

您需要在具有proxystub.dll和winmd实现的文件夹中运行icacls。

icacls . /T /grant "ALL APPLICATION PACKAGES":RX

现在,如果你要部署到没有一个开发环境(即视觉工作室)的设备,你需要安装的Visual C++可再发行的Visual Studio 2015年(你可以使用任何VS版本,有,它只是发生,我使用VS2015)。你可以下载它here。还有一件事,由于您没有设备中的开发环境,因此您想部署版本程序集而不是调试,以便程序集不会引用用于调试的库或dll(即msvcr120 .dll而不是msvcr120 d .dll),因为它不会在干净的设备中找到。最后,我有一个blog关于中介组件。你可能想看看它。