Compartir a través de


Estructura SHCREATEPROCESSINFOW (shellapi.h)

[SHCreateProcessAsUserW ya no se implementa en Windows XP o versiones posteriores].

Contiene la información necesaria para SHCreateProcessAsUserW para crear un proceso.

Sintaxis

typedef struct _SHCREATEPROCESSINFOW {
  DWORD                 cbSize;
  ULONG                 fMask;
  HWND                  hwnd;
  LPCWSTR               pszFile;
  LPCWSTR               pszParameters;
  LPCWSTR               pszCurrentDirectory;
  HANDLE                hUserToken;
  LPSECURITY_ATTRIBUTES lpProcessAttributes;
  LPSECURITY_ATTRIBUTES lpThreadAttributes;
  BOOL                  bInheritHandles;
  DWORD                 dwCreationFlags;
  LPSTARTUPINFOW        lpStartupInfo;
  LPPROCESS_INFORMATION lpProcessInformation;
} SHCREATEPROCESSINFOW, *PSHCREATEPROCESSINFOW;

Miembros

cbSize

Tipo: DWORD

Tamaño, en bytes, de esta estructura.

fMask

Tipo: ULONG

Matriz de marcas que indica el contenido y la validez de los demás miembros de la estructura. Puede ser una combinación de los valores siguientes.

SEE_MASK_CLASSKEY

Use la clave del Registro de clases del archivo.

SEE_MASK_CLASSNAME

Use el nombre de clase del archivo.

SEE_MASK_CONNECTNETDRV

Valide el recurso compartido y conéctese a una letra de unidad. El miembro pszFile es una ruta de acceso UNC de un archivo en una red.

SEE_MASK_DOENVSUBST

Expanda cualquier variable de entorno.

SEE_MASK_FLAG_DDEWAIT

Espere a que la conversación DDE finalice antes de devolverla.

SEE_MASK_FLAG_NO_UI

No muestre un cuadro de mensaje de error si se produce un error.

SEE_MASK_HMONITOR

Use esta marca al especificar un monitor en sistemas multimonitor.

SEE_MASK_NOCLOSEPROCESS

La aplicación cerrará el proceso. Si el miembro lpProcessInformation es un puntero PROCESS_INFORMATION válido y SEE_MASK_NOCLOSEPROCESS se establece, el proceso permanecerá abierto cuando SHCreateProcessAsUserW devuelva. Los miembros hProcess y hThread de la estructura PROCESS_INFORMATION contienen los identificadores de proceso y subproceso, respectivamente. Esta marca se establece normalmente para permitir que una aplicación averigüe cuándo finaliza un proceso creado con SHCreateProcessAsUserW . En algunos casos, como cuando se satisface la ejecución a través de una conversación DDE, no se devolverá ningún identificador. La aplicación que realiza la llamada es responsable de cerrar el identificador cuando ya no es necesario. Si no se establece esta marca, el proceso se cerrará antes de que SHCreateProcessAsUserW devuelva, incluso si lpProcessInformation es un puntero válido.

SEE_MASK_NO_CONSOLE

Cree una consola para el nuevo proceso en lugar de tener que heredar la consola del elemento primario. Equivale a usar una marca de CREATE_NEW_CONSOLE con CreateProcess.

SEE_MASK_UNICODE

Indica una aplicación Unicode.

hwnd

Tipo: HWND

Identificador de ventana principal.

pszFile

Tipo: LPCWSTR

Puntero a una cadena Unicode terminada en null que especifica el archivo ejecutable en el que SHCreateProcessAsUserW realizará la acción especificada por el verbo runas . El verbo runas debe ser compatible con la clase del archivo.

Nota Si la ruta de acceso no se incluye con el nombre de archivo, se asume el directorio actual.
 

pszParameters

Tipo: LPCWSTR

Puntero a una cadena Unicode terminada en null que contiene los parámetros de la aplicación. Los parámetros deben estar separados por espacios.

pszCurrentDirectory

Tipo: LPCWSTR

Cadena Unicode terminada en null que contiene el directorio actual.

hUserToken

Tipo: HANDLE

Un token de acceso que se puede usar para representar un usuario determinado. Es necesario cuando hay varios usuarios para esas carpetas que se tratan como pertenecientes a un solo usuario. La aplicación que llama debe tener los privilegios de seguridad adecuados para el usuario concreto, incluidos TOKEN_QUERY y TOKEN_IMPERSONATE, y el subárbol del registro del usuario debe estar montado actualmente. Para obtener más información sobre los problemas de control de acceso, consulte Access Control.

lpProcessAttributes

Tipo: LPSECURITY_ATTRIBUTES

Puntero a una estructura de SECURITY_ATTRIBUTES con el descriptor de seguridad para el nuevo proceso. También especifica si se puede heredar un proceso secundario. Si este parámetro se establece en NULL, el proceso tendrá un descriptor de seguridad predeterminado y el identificador no se puede heredar.

Advertencia de seguridad: El uso incorrecto de un descriptor de seguridad puede poner en peligro la seguridad de la aplicación. Para obtener más información, consulte SECURITY_ATTRIBUTES.

lpThreadAttributes

Tipo: LPSECURITY_ATTRIBUTES

Puntero a una estructura de SECURITY_ATTRIBUTES con el descriptor de seguridad para el nuevo subproceso. También especifica si se puede heredar un proceso secundario. Si este parámetro se establece en NULL, el proceso tendrá un descriptor de seguridad predeterminado y el identificador no se puede heredar.

Advertencia de seguridad: El uso incorrecto de un descriptor de seguridad puede poner en peligro la seguridad de la aplicación. Para obtener más información, consulte SECURITY_ATTRIBUTES.

bInheritHandles

Tipo: BOOL

Indicador de si el nuevo proceso hereda identificadores del proceso de llamada. Si se establece en TRUE, el nuevo proceso hereda cada identificador abierto que se pueda heredar en el proceso de llamada. Los manipuladores heredados tienen el mismo valor y privilegios de acceso que los identificadores originales.

dwCreationFlags

Tipo: DWORD

Marcas que controlan la creación del proceso y la clase de prioridad. Para obtener una lista de las marcas disponibles, consulte CreateProcessAsUser.

lpStartupInfo

Tipo: LPSTARTUPINFOW

Puntero a una estructura STARTUPINFO que especifica cómo debe aparecer la ventana principal del nuevo proceso.

lpProcessInformation

Tipo: LPPROCESS_INFORMATION

Puntero a una estructura de PROCESS_INFORMATION que recibe información sobre el nuevo proceso. Establezca este miembro en un puntero de estructura válido y establezca la marca SEE_MASK_NOCLOSEPROCESS en el miembro fMask y el proceso permanecerá abierto cuando la función vuelva. Los miembros hProcess y hThread de la estructura PROCESS_INFORMATION contendrán los identificadores de proceso y subproceso, respectivamente. Establezca este miembro en NULL y el proceso se cerrará antes de que la función devuelva.

Comentarios

Para incluir comillas dobles en pszParameters, debe incluir cada marca entre comillas, como en el ejemplo siguiente:

sei.lpParameters = "An example: \"\"\"quoted text\"\"\"";

En este caso, la aplicación recibe tres parámetros: Un, ejemplo: y "texto entre comillas".

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional, Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado shellapi.h

Consulte también

SHELLEXECUTEINFO