Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk mendapatkan proses induk di .net tanpa menggunakan p/invoke?

Bagaimana untuk mendapatkan proses induk di .net tanpa menggunakan p/invoke?

Linda Hamilton
Linda Hamiltonasal
2025-01-28 05:26:09796semak imbas

How to Get a Parent Process in .NET Without Using P/Invoke?

Pendekatan yang diurus untuk mendapatkan proses induk dalam .net

Mendapatkan proses induk dalam rangka .NET sering memerlukan penggunaan platform Invoke (p/invoke), memperkenalkan kerumitan yang berpotensi. Artikel ini membentangkan penyelesaian yang diuruskan, menghapuskan keperluan untuk p/invoke dan meningkatkan kecekapan.

menggunakan kelas utiliti tersuai:

Penyelesaian menggunakan kelas tersuai,

, untuk mendapatkan maklumat proses ibu bapa tanpa menggunakan kod yang tidak diurus: ParentProcessUtilities

<code class="language-csharp">public struct ParentProcessUtilities
{
    public IntPtr PebBaseAddress;
    public IntPtr InheritedFromUniqueProcessId;
}</code>

menyimpan alamat Blok Alam Sekitar Proses (PEB), dan PebBaseAddress mengandungi ID unik proses induk. InheritedFromUniqueProcessId

Mendapatkan maklumat proses induk:

Proses induk proses semasa boleh diperoleh dengan menggunakan:

<code class="language-csharp">Process parentProcess = ParentProcessUtilities.GetParentProcess();</code>
Sebagai alternatif, anda boleh menentukan ID Proses atau mengendalikan:

<code class="language-csharp">Process parentProcess = ParentProcessUtilities.GetParentProcess(processId);
Process parentProcess = ParentProcessUtilities.GetParentProcess(processHandle);</code>

Butiran Pelaksanaan: Memanfaatkan Windows Native API

Kaedah ini menggunakan fungsi

dari API Native Windows (NTDLL): NtQueryInformationProcess

<code class="language-csharp">[DllImport("ntdll.dll")]
private static extern int NtQueryInformationProcess(IntPtr processHandle, 
    int processInformationClass, ref ParentProcessUtilities processInformation, 
    int processInformationLength, out int returnLength);</code>
Dengan menggunakan Kelas Maklumat Proses yang sesuai (0), fungsi memaparkan struktur

dengan data yang diperlukan. Objek proses induk kemudian diambil menggunakan ID proses yang diwarisi. ParentProcessUtilities

Pendekatan yang diuruskan ini menawarkan alternatif yang lebih bersih dan lebih cekap untuk P/Invoke, terutamanya bermanfaat dalam aplikasi sensitif prestasi. Ia menyediakan kaedah yang mantap dan boleh dipercayai untuk mengenal pasti proses induk dalam persekitaran .NET.

Atas ialah kandungan terperinci Bagaimana untuk mendapatkan proses induk di .net tanpa menggunakan p/invoke?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn