Lenguaje

ProcessStartInfo.InheritedHandles Propiedad

Definición

Obtiene o establece una lista de identificadores que el proceso secundario hereda.

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 de propiedad

Lista de SafeHandle objetos que el proceso secundario hereda explícitamente o null para usar el comportamiento de herencia de identificador predeterminado.

Comentarios

Cuando esta propiedad no nulles , la herencia de identificadores está restringida a los identificadores estándar y a los identificadores de esta lista. Si la lista está vacía, solo se heredan los identificadores estándar.

Solo SafeFileHandle y SafePipeHandle se admiten en esta lista.

Establecer esta propiedad en sistemas Unix que no tienen compatibilidad nativa para controlar la herencia de identificadores puede degradar gravemente el rendimiento del inicio del proceso.

Los identificadores de esta lista no deben tener habilitada la herencia de antemano. Si lo hacen, otros procesos podrían ser heredados involuntariamente por otros procesos que se iniciaron simultáneamente con distintas API, lo que podría provocar problemas de seguridad o administración de recursos.

No se admiten dos inicios de proceso simultáneos que pasen el mismo identificador en InheritedHandles . En Windows, la implementación modifica temporalmente las marcas de herencia de cada identificador. Esas modificaciones no son seguras para subprocesos en los inicios simultáneos que comparten el mismo identificador.

Esta API no se puede usar junto con establecida true en UseShellExecute o al especificar un nombre de usuario a través de la UserName propiedad .

En Windows, la implementación habilita temporalmente la herencia en cada identificador de esta lista modificando las marcas del identificador mediante SetHandleInformation. Después de crear el proceso secundario, la herencia se deshabilita incondicionalmente en estos identificadores para evitar que otros procesos se hereden de otras API. Los propios identificadores no están duplicados; se convierten en heredables y se pasan al proceso secundario.

En Unix, la implementación modifica cada descriptor de archivo del proceso secundario quitando la marca FD_CLOEXEC. La modificación se produce después de la bifurcación y antes del exec, por lo que no afecta al proceso primario.

Se aplica a