名前付きパイプ
Windowsのプロセス間通信手段のひとつ。リモートからの利用はアプリ自身のポートではなくSMB(TCP 445)を経由する。
- 概念URI
https://comcomponent.com/knowledge/named-pipe/
- 下位概念
- PipeSecurityによる明示的ACL / 接続元PIDの検証
- 最終確認日
- 2026-08-01
- 機械可読データ
- JSON-LD
この概念が関わる関係
- 通知を別チャネルへ逃がす設計は名前付きパイプを利用します。共有メモリの通知を別チャネルへ逃がす選択肢の1つとして、Windowsのnamed pipeを利用できる。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- 名前付きパイプはPipeOptions.CurrentUserOnlyで構成できます。.NETのNamedPipeServerStreamを使う実装では、名前付きパイプへの接続認可はCurrentUserOnlyで現在のユーザー(かつ同じ昇格レベル)に絞り込める。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- 多重起動防止(シングルインスタンス化)は名前付きパイプを利用します。この記事の設計では、多重起動検出後の通知(起動引数の転送やアクティブ化要求)には名前付きパイプを使う(IPC手段の比較は別記事に譲る)。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- 名前付きパイプはGetNamedPipeServerProcessIdで確認できます。接続済みの名前付きパイプのサーバー側プロセスIDは、GetNamedPipeServerProcessIdで確認できる。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- GetNamedPipeServerProcessIdは名前付きパイプを前提とします。GetNamedPipeServerProcessIdは、接続済みの名前付きパイプのクライアント側ハンドルを引数に取る。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Administrator Broker Modelは名前付きパイプを利用します。本記事が組み立てるbroker EXE実装のように、runasと標準入出力リダイレクトの相性の悪さを避けたい場合、UIとhelperの通信には名前付きパイプなどのIPCを使う / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- 名前付きパイプはPipeSecurityによる明示的ACLで構成できます。名前付きパイプは既定のセキュリティ記述子に頼らず、明示的なPipeSecurityで接続を許可するユーザーSIDを限定して構成する / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- 名前付きパイプはパイプへの不正な接続の原因になることがあります。既定のセキュリティ記述子のまま名前付きパイプを使うと、Everyoneや匿名にも読み取り権が入りうる / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- 名前付きパイプはSMB(TCP 445)を利用します。リモートの名前付きパイプはアプリ自身のポートではなくSMB(TCP 445)を経由するため、必要なのはSMB側の規則になる / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- 名前付きパイプは同一マシン内の要求応答通信に対する本記事の推奨です。同一マシン内の要求応答(コマンドを送って結果をもらう)通信では名前付きパイプが第一候補として推奨される / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- gRPCは名前付きパイプを利用します。.NET 8以降のASP.NET Core(Kestrel)でWindows上のプロセス間通信に使う場合に限り、gRPCの通信路として名前付きパイプを直接サポートし、ポートレスでACL統合された構成を作れる。gRPCの通信路は通常TCP(HTTP/2)である / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- 名前付きパイプは小規模なツール間通信(コマンド数個)に対する本記事の推奨です。コマンド数が少ないツール間通信では名前付きパイプ+JSONのほうが総コストが低い / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- 制御面とデータ面の分離(2チャネル構成)は名前付きパイプを利用します。Windows上でこのパターンを組む場合、制御面(開始・停止・設定変更)は名前付きパイプなど低頻度の要求応答チャネルに割り当てる / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- 名前付きパイプは32bit/64bitブリッジに対する本記事の推奨です。呼び出し側がC#同士の32/64bitブリッジでは、64bitのヘルパープロセスを名前付きパイプで呼ぶ構成のほうが配布も調査も楽である / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- 名前付きパイプはPipeSecurity(名前付きパイプのACL)で構成できます。権限境界を越える通信(UACブローカーやサービスとの通信)では既定のCurrentUserOnlyが使えないため、PipeSecurityでACLを明示的に構成する / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- 名前付きパイプはパイプ名の占有(スクワッティング)の原因になることがあります。パイプ名は\\.\pipe\配下の全員から見える名前空間にあり、悪意あるプロセスが同名で先にサーバーを立てて待ち受けるスクワッティングが起こり得る / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- 名前付きパイプはパイプ名の占有(スクワッティング)を軽減します。サーバー側でPipeOptions.FirstPipeInstanceを指定し同名パイプが既にあれば失敗させる、クライアント側で接続後に所有者アカウントを検証するといった対策で軽減できる / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- プロセス間通信(IPC)は名前付きパイプを利用します。サービスとUIアプリ間のIPCでは、選択肢の一つとして名前付きパイプが案内されている / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- プロセス間通信(IPC)は名前付きパイプを利用します。サービスとUIアプリ間で通信する場合、その手段の一つとして名前付きパイプなどが案内されている / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
この概念を扱う記事
一次資料
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。