Sprache

ProcessStartInfo.InheritedHandles Eigenschaft

Definition

Dient zum Abrufen oder Festlegen einer Liste von Handles, die vom untergeordneten Prozess geerbt werden sollen.

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)

Eigenschaftswert

Eine Liste von SafeHandle Objekten, die explizit vom untergeordneten Prozess geerbt werden sollen, oder null um das Standardverhalten für die Vererbung zu verwenden.

Hinweise

Wenn diese Eigenschaft nicht nullfestgelegt ist, ist die Vererbung auf die Standardhandles und die Handles aus dieser Liste beschränkt. Wenn die Liste leer ist, werden nur die Standardhandles geerbt.

Nur SafeFileHandle und SafePipeHandle werden in dieser Liste unterstützt.

Das Festlegen dieser Eigenschaft auf Unix-Systemen, die keine systemeigene Unterstützung für die Steuerung der Handlevererbung haben, kann die Prozessstartleistung erheblich beeinträchtigen.

Handles in dieser Liste sollten zuvor nicht vererbungsfähig sein. Andernfalls könnten sie unbeabsichtigt von anderen Prozessen geerbt werden, die gleichzeitig mit verschiedenen APIs gestartet wurden, was zu Sicherheits- oder Ressourcenverwaltungsproblemen führen kann.

Zwei gleichzeitige Prozessstarts, die dasselbe Handle InheritedHandles übergeben, werden nicht unterstützt. Bei Windows ändert die Implementierung vorübergehend die Vererbungskennzeichnungen jedes Handles. Diese Änderungen sind nicht threadsicher für gleichzeitige Starts der Gemeinsamen Nutzung desselben Handles.

Diese API kann nicht zusammen mit UseShellExecute festgelegtem true oder beim Angeben eines Benutzernamens über die UserName Eigenschaft verwendet werden.

Bei Windows ermöglicht die Implementierung vorübergehend die Vererbung für jedes Handle in dieser Liste, indem die Flags des Handles mithilfe von SetHandleInformation geändert werden. Nachdem der untergeordnete Prozess erstellt wurde, ist die Vererbung für diese Handles bedingungslos deaktiviert, um zu verhindern, dass sie von anderen Prozessen geerbt werden, die mit verschiedenen APIs gestartet wurden. Die Ziehpunkte selbst werden nicht dupliziert; sie werden vererbbar gemacht und an den untergeordneten Prozess übergeben.

Bei Unix ändert die Implementierung jeden Dateideskriptor im untergeordneten Prozess, indem das FD_CLOEXEC-Flag entfernt wird. Die Änderung erfolgt nach der Verzweigung und vor dem Exec, sodass sie sich nicht auf den übergeordneten Prozess auswirkt.

Gilt für: