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.
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 |