5

Windows 8 で AppContainer 整合性レベルを使用して名前付きパイプを作成するにはどうすればよいですか?

4

2 に答える 2

4

Pavel Minaev がいくつかの回答へのコメントの 1 つで言及したように、WinRT には名前付きパイプはありません (Metro アプリケーションの場合、デスクトップ アプリケーションの場合、パイプは Windows 7 と同じです)。

たとえば、名前付きパイプは存在せず、メモリ マップ ファイルも存在しません。ソケット(サーバーソケット含む)はありますが、localhostに接続する場合は同じアプリにしか接続できません。

ソケットを含むWinRT APIに興味があるかもしれません。

于 2011-10-10T06:42:45.443 に答える
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 でパイプが拒否されるのは、OS の設計によるものではなく、WinRT のインターフェイスの欠如によるものです。

于 2014-08-12T12:49:16.707 に答える