ProcessStartInfo.InheritedHandles Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar eller anger en lista över referenser som ska ärvas av den underordnade processen.
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)
Egenskapsvärde
En lista över SafeHandle objekt som uttryckligen ska ärvas av den underordnade processen eller null för att använda standardbeteendet för arv.
Kommentarer
När den här egenskapen inte nullär är hanteringen av arv begränsad till standardreferenserna och handtagen från den här listan. Om listan är tom ärvs endast standardreferenserna.
Endast SafeFileHandle och SafePipeHandle stöds i den här listan.
Om du ställer in den här egenskapen på Unix-system som inte har inbyggt stöd för att kontrollera handtagsarv kan processens startprestanda försämras kraftigt.
Referenser i den här listan bör inte ha arv aktiverat i förväg. Om de gör det kan de oavsiktligt ärvas av andra processer som startas samtidigt med olika API:er, vilket kan leda till problem med säkerhets- eller resurshantering.
Två samtidiga processstarter som skickar samma handtag i InheritedHandles stöds inte. På Windows ändrar implementeringen tillfälligt varje referenss arvsflaggor. Dessa ändringar är inte trådsäkra över samtidiga börjar dela samma handtag.
Det här API:et UserName kan inte användas tillsammans med UseShellExecute inställt på true eller när du anger ett användarnamn via egenskapen .
På Windows möjliggör implementeringen tillfälligt arv på varje handtag i den här listan genom att ändra handtagets flaggor med SetHandleInformation. När den underordnade processen har skapats inaktiveras arv villkorslöst på dessa referenser för att förhindra att de ärvs av andra processer som startats med olika API:er. Själva handtagen dupliceras inte. de görs ärvbara och skickas till den underordnade processen.
I Unix ändrar implementeringen varje filbeskrivning i den underordnade processen genom att ta bort flaggan FD_CLOEXEC. Ändringen sker efter förgreningen och före utökningen, så den påverkar inte den överordnade processen.