我有 2 个应用程序在同一台机器上运行。
Editor 是一款使用 WinRT 开发的 Windows 8 应用程序,采用沙盒技术。 (客户)
Integrator 是一个 C++ 应用程序,用于通过串行 COM 端口读取硬件设备。 (服务器)
我已经做了很多关于如何让客户端/服务器通信在 Windows 8 上工作的搜索, 并且只能找到说无法使用标准 WinRT 类等的帖子。
我需要的是一个解决方案,其中 Windows 8 应用程序作为客户端,而独立的 可执行文件用作服务器。
有人可以建议一种可用于进行客户端/服务器通信的机制。
如果我们找不到好的解决方案,那么我们将不得不求助于使用文件,这 我宁愿不必这样做。
澄清:我知道可用于进行客户端/服务器通信的许多机制。 我正在寻找的是解决问题的方法,这些技术将无法解决 使用 WinRT 开发的 Windows 8 应用程序。由于沙箱明确禁止客户端 和服务器在同一台主机上。
最佳答案
好吧,声明无法进行此类通信的帖子大多是正确的。有两个原因,为什么要阻止这种情况:
- 能够与沙箱外的应用程序通信有效地打破了沙箱。 Windows 应用商店应用程序现在突然能够执行桌面应用程序可以执行的所有操作:访问文件系统、注册表...出于某种原因,Windows 应用商店应用程序存在于沙箱中 - 以确保用户安全。
- Windows 应用商店应用程序在从应用商店或软件包安装后将无法运行。它还需要安装并正确设置桌面应用程序。
我建议您尝试将您的服务器部分移至另一台机器并使其成为合适的服务器。如果出于某种原因您确实不能这样做,您仍然可以使用以下选项:
- 如果取消对 Windows 应用商店应用程序的隔离,则可以使用 TCP/IP 连接本地网络资源。您将需要使用
CheckNetIsolation.exe
,但由于您已经需要单独安装桌面应用程序,所以这应该不是什么大问题。 - 您可以创建具有特定扩展名的文件。然后为一个扩展注册桌面应用,为另一个扩展注册 Windows 应用商店应用。您现在可以通过 shell 执行具有这些扩展名的文件,以将它们用作其他应用程序的消息。
关于c++ - 我需要一个 Windows 8 WinRT 应用程序来与用 C 编写的独立应用程序进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17470841/