Windows 8 命名管道创建
如何在 Windows 8 中使用 AppContainer 完整性级别创建命名管道?
How I can create named pipe in the Windows 8 with AppContainer integrity level?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
正如帕维尔·米纳耶夫 (Pavel Minaev) 在评论之一中提到的 一些答案,WinRT 中没有命名管道(对于 Metro 应用程序,对于桌面应用程序管道与 Windows 中的管道相同) 7):
您可能对 WinRT API,包括套接字。
As Pavel Minaev mentioned in one of comments to some answer, there are no named pipes in WinRT (for Metro applications, for desktop applications pipes are the same as in Windows 7):
You may be interested in the WinRT API, including sockets.
谈论 WinRT - 你确实无法创建命名管道。
谈论在 AppContainer 完整性级别下运行的 Windows 8 桌面应用程序 - 您可以通过常规 WinAPI 函数创建命名管道。问题是默认情况下只有具有相同 AppContainer ID 的应用程序才能访问它(换句话说,只有您自己的应用程序的实例)。但事实上,如果您的进程处于高或中完整性级别 - 您可以从该进程创建管道并降低其完整性级别,以便 AppContainer 中的应用程序可以使用它。
看看这里的示例: http ://msdn.microsoft.com/en-us/library/windows/desktop/hh448493(v=vs.85).aspx
甚至更多 - 来自具有 High 的桌面应用程序完整性级别,您可以使用 dll 注入将 dll 注入 WinRT 应用程序,然后再次使用 WinAPI 创建管道。因此,WinRT 中的管道被拒绝并不是因为操作系统设计,而是因为 WinRT 中缺少接口。
Talking about WinRT - you really can't create named pipe.
Talking about Windows 8 desktop application running under AppContainer integrity level - you can create named pipe by regular WinAPI functions. The problem is by default only applications with same AppContainer ID could access it (in other words - only instances of your own application). But in fact if you have process under High or Medium integrity level - from this process you can create pipe and decrease its integrity level, so applications from AppContainer can use it.
Take a look at sample here: http://msdn.microsoft.com/en-us/library/windows/desktop/hh448493(v=vs.85).aspx
Even more - from desktop application with High integrity level you can use dll injection to inject you dll to WinRT application and again - use WinAPI to create pipes. So pipes are denied in WinRT not by OS design, but only by lack of interfaces in WinRT.