ProcessStartInfo.InheritedHandles Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een lijst met ingangen opgehaald of ingesteld die moeten worden overgenomen door het onderliggende proces.
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)
Waarde van eigenschap
Een lijst SafeHandle met objecten die expliciet moeten worden overgenomen door het onderliggende proces of null om het standaardgedrag voor overname van ingangen te gebruiken.
Opmerkingen
Als deze eigenschap niet nullis, wordt de overname van ingangen beperkt tot de standaardgrepen en de ingangen uit deze lijst. Als de lijst leeg is, worden alleen de standaardgrepen overgenomen.
Alleen SafeFileHandle en SafePipeHandle worden ondersteund in deze lijst.
Als u deze eigenschap instelt op Unix-systemen die geen systeemeigen ondersteuning hebben voor het beheren van overname van ingangen, kan de startprestaties van het proces ernstig afnemen.
Ingangen in deze lijst mogen overname niet vooraf hebben ingeschakeld. Als ze dat doen, kunnen ze onbedoeld worden overgenomen door andere processen die gelijktijdig met verschillende API's zijn gestart, wat kan leiden tot beveiligings- of resourcebeheerproblemen.
Twee gelijktijdige processen die dezelfde ingang InheritedHandles doorgeven, worden niet ondersteund. Op Windows wijzigt de implementatie de overnamevlagmen van elke ingang tijdelijk. Deze wijzigingen zijn niet thread-safe voor gelijktijdige start met het delen van dezelfde ingang.
Deze API kan niet samen worden gebruikt met UseShellExecute ingesteld op true of wanneer u een gebruikersnaam opgeeft via de UserName eigenschap.
Op Windows schakelt de implementatie tijdelijk overname in voor elke ingang in deze lijst door de vlaggen van de ingang te wijzigen met Behulp van SetHandleInformation. Nadat het onderliggende proces is gemaakt, wordt overname onvoorwaardelijke uitgeschakeld op deze ingangen om te voorkomen dat ze worden overgenomen door andere processen die zijn gestart met verschillende API's. De ingangen zelf worden niet gedupliceerd; ze worden overgenomen en doorgegeven aan het onderliggende proces.
In Unix wijzigt de implementatie elke bestandsdescriptor in het onderliggende proces door de vlag FD_CLOEXEC te verwijderen. De wijziging vindt plaats na de fork en vóór het exec, dus dit heeft geen invloed op het bovenliggende proces.