Maison > développement back-end > C++ > Comment obtenir un processus parent dans .NET sans utiliser P / Invoke?

Comment obtenir un processus parent dans .NET sans utiliser P / Invoke?

Linda Hamilton
Libérer: 2025-01-28 05:26:09
original
820 Les gens l'ont consulté

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

Une approche gérée pour récupérer les processus parents dans .NET

L'obtention du processus parent dans le framework .NET nécessite souvent l'utilisation de la plate-forme Invoke (P / Invoke), l'introduction de complexités potentielles. Cet article présente une solution gérée, éliminant le besoin de p / invoquer et améliorer l'efficacité.

Utilisation d'une classe d'utilité personnalisée:

La solution utilise une classe personnalisée, ParentProcessUtilities, pour récupérer les informations du processus parent sans recourir à un code non géré:

public struct ParentProcessUtilities
{
    public IntPtr PebBaseAddress;
    public IntPtr InheritedFromUniqueProcessId;
}
Copier après la connexion

PebBaseAddress stocke l'adresse de bloc d'environnement de processus (PEB), et InheritedFromUniqueProcessId contient l'ID unique du processus parent.

Récupération des informations du processus parent:

Le processus parent du processus actuel peut être obtenu en utilisant:

Process parentProcess = ParentProcessUtilities.GetParentProcess();
Copier après la connexion

Alternativement, vous pouvez spécifier l'ID de processus ou gérer:

Process parentProcess = ParentProcessUtilities.GetParentProcess(processId);
Process parentProcess = ParentProcessUtilities.GetParentProcess(processHandle);
Copier après la connexion

Détails de l'implémentation: Tire de la mise à jour de l'API native Windows

Cette méthode utilise la fonction NtQueryInformationProcess de l'API native Windows (NTDLL):

[DllImport("ntdll.dll")]
private static extern int NtQueryInformationProcess(IntPtr processHandle, 
    int processInformationClass, ref ParentProcessUtilities processInformation, 
    int processInformationLength, out int returnLength);
Copier après la connexion

En utilisant la classe d'informations de processus appropriée (0), la fonction remplit la structure ParentProcessUtilities avec les données requises. L'objet de processus parent est ensuite récupéré à l'aide de l'ID de processus hérité.

Cette approche gérée offre une alternative plus propre et plus efficace à P / Invoke, particulièrement bénéfique dans les applications sensibles à la performance. Il fournit une méthode robuste et fiable pour identifier les processus parents dans l'environnement .NET.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal