-1

我用brokered copmonent创建了一个测试应用程序,它在我的机器上运行流畅,但是当它移动到平板电脑并完成所有必需的设置(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?我对代理补偿进行了研究,我所做的与可用的文档完全一样!有任何想法吗?我在这里错过了什么吗?我需要做额外的设置吗?我的系统是否缺少任何必需的 dll?我对代理补偿进行了研究,我所做的与可用的文档完全一样!有任何想法吗?我在这里错过了什么吗?我需要做额外的设置吗?我的系统是否缺少任何必需的 dll?

4

2 回答 2

0

该应用程序无权访问 msvcr120d.dll 将“所有应用程序包”添加到此 dll 中,它将解决问题。

于 2015-03-31T14:29:46.827 回答
0

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

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

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

ICACLS . /T /grant "所有应用程序包":RX

现在,如果您要部署到没有开发环境的设备(即 Visual Studio),则需要为 Visual Studio 2015 安装 Visual C++ Redistributable(您可以使用您拥有的任何 VS 版本,只是碰巧我正在使用VS2015)。你可以在这里下载。还有一件事,由于您在设备中没有开发环境,因此您希望部署Release程序集而不是 Debug以便程序集不会引用用于调试的库或 dll(即 msvcr120.dll 而不是msvcr120 d .dll),因为它不会在干净的设备中找到。

最后,我有一个关于代理组件的博客。你可能想检查一下。

于 2015-12-22T21:43:00.403 回答