Как я могу создать именованный канал в Windows 8 с уровнем целостности AppContainer?
Создание именованного канала в Windows 8
Ответы (2)
Как отметил Павел Минаев в одном из комментариев к некоторый ответ, в WinRT нет именованных каналов (для приложений Metro каналы для настольных приложений такие же, как в Windows 7):
Например, здесь нет ни именованных каналов, ни файлов с отображением памяти. Есть сокеты (включая сокеты сервера), но при подключении к локальному хосту вы можете подключиться только к тому же приложению.
Вас может заинтересовать WinRT API, включая сокеты.
Говоря о WinRT, вы действительно не можете создать именованный канал.
Говоря о настольном приложении Windows 8, работающем на уровне целостности AppContainer, вы можете создать именованный канал с помощью обычных функций WinAPI. Проблема в том, что по умолчанию к нему могут получить доступ только приложения с одинаковым идентификатором AppContainer (другими словами - только экземпляры вашего собственного приложения). Но на самом деле, если у вас есть процесс с высоким или средним уровнем целостности - из этого процесса вы можете создать канал и понизить его уровень целостности, чтобы приложения из AppContainer могли его использовать.
Взгляните на образец здесь: http://msdn.microsoft.com/en-us/library/windows/desktop/hh448493(v=vs.85).aspx
Более того, из настольного приложения с высоким уровнем целостности вы можете использовать внедрение dll для внедрения dll в приложение WinRT и снова использовать WinAPI для создания каналов. Таким образом, каналы запрещены в WinRT не из-за дизайна ОС, а только из-за отсутствия интерфейсов в WinRT.