Idioma

ProcessStartInfo.InheritedHandles Propriedade

Definição

Obtém ou define uma lista de identificadores a serem herdados pelo processo filho.

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)

Valor da propriedade

Uma lista de SafeHandle objetos a serem herdados explicitamente pelo processo filho ou null usar o comportamento padrão de herança do identificador.

Comentários

Quando essa propriedade não nullestiver, a herança do identificador será restrita aos identificadores padrão e aos identificadores dessa lista. Se a lista estiver vazia, somente as alças padrão serão herdadas.

Somente SafeFileHandle e SafePipeHandle há suporte nesta lista.

Definir essa propriedade em sistemas Unix que não têm suporte nativo para controlar a herança do identificador pode prejudicar severamente o desempenho de início do processo.

Os identificadores nesta lista não devem ter a herança habilitada com antecedência. Se o fizerem, eles poderão ser herdados involuntariamente por outros processos iniciados simultaneamente com APIs diferentes, o que pode levar a problemas de segurança ou gerenciamento de recursos.

Não há suporte para dois processos simultâneos que passam o mesmo identificador InheritedHandles . Em Windows, a implementação modifica temporariamente os sinalizadores de herança de cada identificador. Essas modificações não são thread-safe entre as partidas simultâneas que começam a compartilhar o mesmo identificador.

Essa API não pode ser usada junto com UseShellExecute set to true ou ao especificar um nome de usuário por meio da UserName propriedade.

Em Windows, a implementação habilita temporariamente a herança em cada identificador nesta lista modificando os sinalizadores do identificador usando SetHandleInformation. Depois que o processo filho é criado, a herança é incondicionalmente desabilitada nesses identificadores para impedir que eles sejam herdados por outros processos iniciados com APIs diferentes. Os próprios identificadores não são duplicados; eles são herdáveis e passados para o processo filho.

No Unix, a implementação modifica cada descritor de arquivo no processo filho removendo o sinalizador FD_CLOEXEC. A modificação ocorre após a bifurcação e antes do executivo, portanto, não afeta o processo pai.

Aplica-se a