ProcessStartInfo.InheritedHandles Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient ou définit une liste de handles à hériter par le processus enfant.
public:
property System::Collections::Generic::IList<System::Runtime::InteropServices::SafeHandle ^> ^ InheritedHandles { System::Collections::Generic::IList<System::Runtime::InteropServices::SafeHandle ^> ^ get(); void set(System::Collections::Generic::IList<System::Runtime::InteropServices::SafeHandle ^> ^ value); };
public System.Collections.Generic.IList<System.Runtime.InteropServices.SafeHandle>? InheritedHandles { get; set; }
member this.InheritedHandles : System.Collections.Generic.IList<System.Runtime.InteropServices.SafeHandle> with get, set
Public Property InheritedHandles As IList(Of SafeHandle)
Valeur de propriété
Liste d’objets SafeHandle à hériter explicitement par le processus enfant, ou null pour utiliser le comportement d’héritage de handle par défaut.
Remarques
Lorsque cette propriété n’est pas null, l’héritage de handle est limité aux handles standard et aux handles de cette liste. Si la liste est vide, seuls les handles standard sont hérités.
Seules SafeFileHandle et SafePipeHandle sont prises en charge dans cette liste.
La définition de cette propriété sur les systèmes Unix qui n’ont pas de prise en charge native du contrôle de l’héritage de handle peut dégrader gravement les performances de démarrage du processus.
Les handles de cette liste ne doivent pas avoir l’héritage activé au préalable. S’ils le font, ils peuvent être hérités involontairement par d’autres processus démarrés simultanément avec différentes API, ce qui peut entraîner des problèmes de sécurité ou de gestion des ressources.
Deux processus simultanés démarrent qui passent le même handle ne sont pas pris en InheritedHandles charge. Sur Windows, l'implémentation modifie temporairement les indicateurs d'héritage de chaque handle. Ces modifications ne sont pas thread-safe entre les démarrages simultanés qui commencent à partager le même handle.
Cette API ne peut pas être utilisée avec UseShellExecute la valeur définie true ou lors de la spécification d’un nom d’utilisateur via la UserName propriété.
Sur Windows, l'implémentation active temporairement l'héritage sur chaque handle de cette liste en modifiant les indicateurs du handle à l'aide de SetHandleInformation. Une fois le processus enfant créé, l’héritage est désactivé inconditionnellement sur ces handles pour les empêcher d’être hérités par d’autres processus démarrés avec différentes API. Les handles eux-mêmes ne sont pas dupliqués ; ils sont hérités et transmis au processus enfant.
Sur Unix, l’implémentation modifie chaque descripteur de fichier dans le processus enfant en supprimant l’indicateur de FD_CLOEXEC. La modification se produit après la duplication et avant l’exécution, de sorte qu’elle n’affecte pas le processus parent.