Windows 8 命名管道创建

5

我该如何在拥有AppContainer完整性级别的Windows 8中创建命名管道?


我认为你正在寻找https://dev59.com/kXfZa4cB1Zd3GeqPOzQI。 - EricLaw
2个回答

4
正如Pavel Minaev在某个答案的评论中提到的那样,WinRT(用于Metro应用程序,对于桌面应用程序,管道与Windows 7中的管道相同)中没有命名管道:

例如,没有命名管道,也没有内存映射文件。有套接字(包括服务器套接字),但是当连接到localhost时,只能连接到同一应用程序。

您可能会对WinRT API感兴趣,其中包括套接字

1
如果套接字符合您的需求,则需要在Package.appxmanifest文件中添加“Internet(客户端和服务器)”功能。双击它并转到声明选项卡。 - Roman Boiko
这真的不是一个答案,因为问题是关于“带有AppContainer的Windows 8”,而答案是关于“WinRT”的。在AppContainer完整性级别中可以拥有桌面应用程序,并且在Win8中,命名管道可用于桌面应用程序。不幸的是,我不知道如何创建对高完整性应用程序和“AppContainer”应用程序都可用的管道 - 我得到了“访问被拒绝”的错误,所以问题仍然存在。 - Ezh
1
@Ezh,感谢您提供了有根据的反对意见。如果您找到更多信息,请提供您自己的答案。 - Roman Boiko

2
谈论WinRT - 你真的不能创建命名管道。
谈论在AppContainer完整性级别下运行的Windows 8桌面应用程序 - 你可以通过常规的WinAPI函数创建命名管道。问题是默认情况下只有具有相同AppContainer ID的应用程序才能访问它(换句话说 - 只有你自己的应用程序的实例)。但实际上,如果您拥有高或中完整性级别的进程 - 您可以从该进程创建管道并降低其完整性级别,以便AppContainer中的应用程序可以使用它。
在这里查看示例:http://msdn.microsoft.com/en-us/library/windows/desktop/hh448493(v=vs.85).aspx 甚至更多 - 从具有高完整性级别的桌面应用程序中,您可以使用dll注入将dll注入到WinRT应用程序中,并再次使用WinAPI创建管道。因此,管道在WinRT中被拒绝不是由于操作系统设计,而仅仅是由于WinRT中缺乏接口。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接