ProcessStartInfo.InheritedHandles Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia listę dojść, które mają być dziedziczone przez proces podrzędny.
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)
Wartość właściwości
Lista SafeHandle obiektów, które mają być jawnie dziedziczone przez proces podrzędny, lub null domyślne zachowanie obsługi dziedziczenia.
Uwagi
Jeśli ta właściwość nie nullma wartości , obsługa dziedziczenia jest ograniczona do standardowych dojść i dojść z tej listy. Jeśli lista jest pusta, dziedziczone są tylko standardowe dojścia.
Tylko SafeFileHandle i SafePipeHandle są obsługiwane na tej liście.
Ustawienie tej właściwości w systemach Unix, które nie mają natywnej obsługi kontroli dziedziczenia obsługi, może poważnie obniżyć wydajność uruchamiania procesu.
Dojścia na tej liście nie powinny mieć wcześniej włączonego dziedziczenia. Jeśli tak, mogą one być przypadkowo dziedziczone przez inne procesy uruchomione współbieżnie z różnymi interfejsami API, co może prowadzić do problemów z zabezpieczeniami lub zarządzaniem zasobami.
Dwa współbieżne uruchomienia procesu, które przechodzą ten sam uchwyt w systemie InheritedHandles , nie są obsługiwane. W Windows implementacja tymczasowo modyfikuje flagi dziedziczenia każdego uchwytu. Te modyfikacje nie są bezpieczne wątkowo między współbieżnych rozpoczyna udostępnianie tego samego uchwytu.
Tego interfejsu API nie można używać razem z UseShellExecute ustawieniem na true lub podczas określania UserName nazwy użytkownika za pośrednictwem właściwości .
W Windows implementacja tymczasowo włącza dziedziczenie na każdym dojściu na tej liście, modyfikując flagi uchwytu przy użyciu polecenia SetHandleInformation. Po utworzeniu procesu podrzędnego dziedziczenie jest bezwarunkowo wyłączone na tych uchwytach, aby zapobiec dziedziczeniu ich przez inne procesy uruchomione z różnymi interfejsami API. Same uchwyty nie są duplikowane; są one dziedziczone i przekazywane do procesu podrzędnego.
W systemie Unix implementacja modyfikuje każdy deskryptor plików w procesie podrzędnym, usuwając flagę FD_CLOEXEC. Modyfikacja występuje po rozwidleniu i przed exec, więc nie ma wpływu na proces nadrzędny.