Lingua

ProcessStartInfo.InheritedHandles Proprietà

Definizione

Ottiene o imposta un elenco di handle da ereditare dal processo figlio.

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)

Valore della proprietà

Elenco di SafeHandle oggetti che devono essere ereditati in modo esplicito dal processo figlio o null per utilizzare il comportamento di ereditarietà dell'handle predefinito.

Commenti

Quando questa proprietà non nullè , la gestione dell'ereditarietà è limitata agli handle standard e agli handle di questo elenco. Se l'elenco è vuoto, vengono ereditati solo gli handle standard.

Solo SafeFileHandle e SafePipeHandle sono supportati in questo elenco.

L'impostazione di questa proprietà nei sistemi Unix che non dispongono del supporto nativo per il controllo dell'ereditarietà dell'handle può compromettere gravemente le prestazioni di avvio del processo.

Gli handle in questo elenco non devono avere l'ereditarietà abilitata in anticipo. In tal caso, potrebbero essere ereditati involontariamente da altri processi avviati simultaneamente con API diverse, che potrebbero causare problemi di sicurezza o gestione delle risorse.

Due processi simultanei iniziano che passano lo stesso handle in InheritedHandles non sono supportati. In Windows, l'implementazione modifica temporaneamente i flag di ereditarietà di ogni handle. Queste modifiche non sono thread-safe tra simultanee avviano la condivisione dello stesso handle.

Questa API non può essere usata insieme a UseShellExecute impostata su true o quando si specifica un nome utente tramite la UserName proprietà .

In Windows, l'implementazione abilita temporaneamente l'ereditarietà su ogni handle in questo elenco modificando i flag dell'handle usando SetHandleInformation. Dopo la creazione del processo figlio, l'ereditarietà viene disabilitata in modo incondizionato in questi handle per impedire che vengano ereditate da altri processi avviati con API diverse. Gli handle stessi non vengono duplicati; sono resi ereditabili e passati al processo figlio.

In Unix, l'implementazione modifica ogni descrittore di file nel processo figlio rimuovendo il flag FD_CLOEXEC. La modifica viene eseguita dopo il fork e prima dell'esecuzione, quindi non influisce sul processo padre.

Si applica a