Создание именованного канала в Windows 8

Как я могу создать именованный канал в Windows 8 с уровнем целостности AppContainer?


person bajlepa    schedule 09.10.2011    source источник
comment
Я думаю, вы ищете stackoverflow.com/questions/18982221/   -  person EricLaw    schedule 13.10.2013


Ответы (2)


Как отметил Павел Минаев в одном из комментариев к некоторый ответ, в WinRT нет именованных каналов (для приложений Metro каналы для настольных приложений такие же, как в Windows 7):

Например, здесь нет ни именованных каналов, ни файлов с отображением памяти. Есть сокеты (включая сокеты сервера), но при подключении к локальному хосту вы можете подключиться только к тому же приложению.

Вас может заинтересовать WinRT API, включая сокеты.

person Roman Boiko    schedule 10.10.2011
comment
Если сокеты соответствуют вашим потребностям, необходимо добавить возможность Интернета (клиент и сервер) в файле Package.appxmanifest. Дважды щелкните его и перейдите на вкладку «Объявления». - person Roman Boiko; 10.10.2011
comment
На самом деле это не ответ, потому что вопрос был о Windows 8 с AppContainer, а ответ - о WinRT. Возможно иметь настольное приложение на уровне целостности AppContainer, а именованные каналы доступны для настольных приложений в Win8. К сожалению, я не знаю, как создать канал, доступный как для приложения с высокой степенью интеграции, так и для приложения AppContainer - мне было отказано в доступе, поэтому вопрос остается открытым. - person Ezh; 08.07.2013
comment
@Ezh спасибо за действительное и аргументированное отрицательное голосование. Пожалуйста, дайте свой собственный ответ, если вы найдете больше информации об этом. - person Roman Boiko; 08.07.2013

Говоря о 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.

person Ezh    schedule 12.08.2014