.NET
ソリューションは、管理されていないコードに頼らずに親プロセス情報を取得するために、カスタムクラス
を採用しています:プロセス環境ブロック(PEB)アドレスを保存し、
には親プロセスの一意のIDが含まれています。
ParentProcessUtilities
<code class="language-csharp">public struct ParentProcessUtilities { public IntPtr PebBaseAddress; public IntPtr InheritedFromUniqueProcessId; }</code>
PebBaseAddress
現在のプロセスの親プロセスは、次のことを使用して取得できます。
InheritedFromUniqueProcessId
実装の詳細:WindowsネイティブAPIをレバレッジします
<code class="language-csharp">Process parentProcess = ParentProcessUtilities.GetParentProcess();</code>このメソッドは、WindowsネイティブAPI(ntdll)から
関数を使用します:
<code class="language-csharp">Process parentProcess = ParentProcessUtilities.GetParentProcess(processId); Process parentProcess = ParentProcessUtilities.GetParentProcess(processHandle);</code>
適切なプロセス情報クラス(0)を使用することにより、関数は構造に必要なデータに浸透します。親プロセスオブジェクトは、継承されたプロセスIDを使用して取得されます。 このマネージドアプローチは、パフォーマンスに敏感なアプリケーションで特に有益なP/Invokeに代わる、よりクリーンで効率的な代替品を提供します。 .NET環境内で親プロセスを識別するための堅牢で信頼できる方法を提供します。
以上がp/invokeを使用せずに.NETで親プロセスを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。