Partager via


Structure SHCREATEPROCESSINFOW (shellapi.h)

[SHCreateProcessAsUserW n’est plus implémenté dans Windows XP ou versions ultérieures.]

Contient les informations nécessaires à SHCreateProcessAsUserW pour créer un processus.

Syntaxe

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;

Membres

cbSize

Type : DWORD

Taille, en octets, de cette structure.

fMask

Type : ULONG

Tableau d’indicateurs qui indique le contenu et la validité des autres membres de la structure. Il peut s’agir d’une combinaison des valeurs suivantes.

SEE_MASK_CLASSKEY

Utilisez la clé de Registre de classes du fichier.

SEE_MASK_CLASSNAME

Utilisez le nom de classe du fichier.

SEE_MASK_CONNECTNETDRV

Validez le partage et connectez-vous à une lettre de lecteur. Le membre pszFile est un chemin d’accès UNC d’un fichier sur un réseau.

SEE_MASK_DOENVSUBST

Développez toutes les variables d’environnement.

SEE_MASK_FLAG_DDEWAIT

Attendez que la conversation DDE se termine avant de revenir.

SEE_MASK_FLAG_NO_UI

N’affichez pas de message d’erreur si une erreur se produit.

SEE_MASK_HMONITOR

Utilisez cet indicateur lors de la spécification d’un moniteur sur des systèmes multisurveillance.

SEE_MASK_NOCLOSEPROCESS

L’application ferme le processus. Si le membre lpProcessInformation est un pointeur de PROCESS_INFORMATION valide et que SEE_MASK_NOCLOSEPROCESS est défini, le processus reste ouvert lorsque SHCreateProcessAsUserW est retourné. Les membres hProcess et hThread de la structure PROCESS_INFORMATION contiennent respectivement les handles de processus et de thread. Cet indicateur est généralement défini pour permettre à une application de savoir quand un processus créé avec SHCreateProcessAsUserW se termine. Dans certains cas, par exemple lorsque l’exécution est satisfaite par le biais d’une conversation DDE, aucun handle n’est retourné. L’application appelante est responsable de la fermeture du handle lorsqu’il n’est plus nécessaire. Si cet indicateur n’est pas défini, le processus est fermé avant que SHCreateProcessAsUserW ne retourne, même si lpProcessInformation est un pointeur valide.

SEE_MASK_NO_CONSOLE

Créez une console pour le nouveau processus au lieu de lui faire hériter de la console parente. Cela équivaut à utiliser un indicateur CREATE_NEW_CONSOLE avec CreateProcess.

SEE_MASK_UNICODE

Indique une application Unicode.

hwnd

Type : HWND

Handle de fenêtre parente.

pszFile

Type : LPCWSTR

Pointeur vers une chaîne Unicode terminée par null qui spécifie le fichier exécutable sur lequel SHCreateProcessAsUserW effectuera l’action spécifiée par le verbe runas . Le verbe runas doit être pris en charge par la classe du fichier.

Note Si le chemin d’accès n’est pas inclus avec le nom de fichier, le répertoire actif est supposé.
 

pszParameters

Type : LPCWSTR

Pointeur vers une chaîne Unicode terminée par null contenant les paramètres d’application. Les paramètres doivent être séparés par des espaces.

pszCurrentDirectory

Type : LPCWSTR

Chaîne Unicode terminée par null qui contient le répertoire actif.

hUserToken

Type : HANDLE

Jeton d’accès qui peut être utilisé pour représenter un utilisateur particulier. Elle est nécessaire lorsqu’il existe plusieurs utilisateurs pour les dossiers qui sont traités comme appartenant à un seul utilisateur. L’application appelante doit disposer des privilèges de sécurité appropriés pour l’utilisateur particulier, notamment TOKEN_QUERY et TOKEN_IMPERSONATE, et la ruche de registre de l’utilisateur doit être actuellement montée. Pour plus d’informations sur les problèmes de contrôle d’accès, consultez Access Control.

lpProcessAttributes

Type : LPSECURITY_ATTRIBUTES

Pointeur vers une structure de SECURITY_ATTRIBUTES avec le descripteur de sécurité pour le nouveau processus. Il spécifie également si un processus enfant peut être hérité. Si ce paramètre a la valeur NULL, le processus a un descripteur de sécurité par défaut et le handle ne peut pas être hérité.

Avertissement de sécurité : L’utilisation incorrecte d’un descripteur de sécurité peut compromettre la sécurité de votre application. Pour plus d’informations, consultez SECURITY_ATTRIBUTES.

lpThreadAttributes

Type : LPSECURITY_ATTRIBUTES

Pointeur vers une structure SECURITY_ATTRIBUTES avec le descripteur de sécurité pour le nouveau thread. Il spécifie également si un processus enfant peut être hérité. Si ce paramètre a la valeur NULL, le processus a un descripteur de sécurité par défaut et le handle ne peut pas être hérité.

Avertissement de sécurité : L’utilisation incorrecte d’un descripteur de sécurité peut compromettre la sécurité de votre application. Pour plus d’informations, consultez SECURITY_ATTRIBUTES.

bInheritHandles

Type : BOOL

Indicateur indiquant si le nouveau processus hérite des handles du processus appelant. S’il est défini sur TRUE, chaque handle ouvert pouvant être hérité dans le processus appelant est hérité par le nouveau processus. Les handles hérités ont la même valeur et les mêmes privilèges d’accès que les handles d’origine.

dwCreationFlags

Type : DWORD

Indicateurs qui contrôlent la création du processus et de la classe de priorité. Pour obtenir la liste des indicateurs disponibles, consultez CreateProcessAsUser.

lpStartupInfo

Type : LPSTARTUPINFOW

Pointeur vers une structure STARTUPINFO qui spécifie comment la fenêtre main du nouveau processus doit apparaître.

lpProcessInformation

Type : LPPROCESS_INFORMATION

Pointeur vers une structure PROCESS_INFORMATION qui reçoit des informations sur le nouveau processus. Définissez ce membre sur un pointeur de structure valide, puis définissez l’indicateur SEE_MASK_NOCLOSEPROCESS dans le membre fMask . Le processus reste ouvert lorsque la fonction est retournée. Les membres hProcess et hThread de la structure PROCESS_INFORMATION contiennent alors respectivement les handles de processus et de thread. Définissez ce membre sur NULL et le processus sera fermé avant le retour de la fonction.

Remarques

Pour inclure des guillemets doubles dans pszParameters, vous devez placer chaque marque dans une paire de guillemets, comme dans l’exemple suivant :

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

Dans ce cas, l’application reçoit trois paramètres : un, exemple :, et « texte entre guillemets ».

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel, Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
En-tête shellapi.h

Voir aussi

SHELLEXECUTEINFO