Condividi tramite


Struttura SHCREATEPROCESSINFOW (shellapi.h)

[SHCreateProcessAsUserW non è più implementato in Windows XP o versioni successive.]

Contiene le informazioni necessarie SHCreateProcessAsUserW per creare un processo.

Sintassi

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;

Membri

cbSize

Tipo: DWORD

Dimensione, in byte, di questa struttura.

fMask

Tipo: ULONG

Matrice di flag che indica il contenuto e la validità degli altri membri della struttura. Può trattarsi di una combinazione dei valori seguenti.

SEE_MASK_CLASSKEY

Usare la chiave del Registro di sistema della classe del file.

SEE_MASK_CLASSNAME

Usare il nome della classe del file.

SEE_MASK_CONNECTNETDRV

Convalidare la condivisione e connettersi a una lettera di unità. Il membro pszFile è un percorso UNC di un file in una rete.

SEE_MASK_DOENVSUBST

Espandere qualsiasi variabile di ambiente.

SEE_MASK_FLAG_DDEWAIT

Attendere che la conversazione DDE venga terminata prima della restituzione.

SEE_MASK_FLAG_NO_UI

Non visualizzare una finestra di messaggio di errore se si verifica un errore.

SEE_MASK_HMONITOR

Usare questo flag quando si specifica un monitoraggio nei sistemi multimonitoraggio.

SEE_MASK_NOCLOSEPROCESS

L'applicazione chiuderà il processo. Se il membro lpProcessInformation è un puntatore PROCESS_INFORMATION valido e SEE_MASK_NOCLOSEPROCESS viene impostato, il processo rimarrà aperto quando SHCreateProcessAsUserW restituisce il. I membri hProcess e hThread della struttura PROCESS_INFORMATION contengono rispettivamente i handle di processo e di thread. Questo flag viene in genere impostato per consentire a un'applicazione di individuare quando un processo creato con SHCreateProcessAsUserW termina. In alcuni casi, ad esempio quando l'esecuzione viene soddisfatta tramite una conversazione DDE, non verrà restituito alcun handle. L'applicazione chiamante è responsabile della chiusura dell'handle quando non è più necessaria. Se questo flag non è impostato, il processo verrà chiuso prima che venga restituito SHCreateProcessAsUserW, anche se lpProcessInformation è un puntatore valido.

SEE_MASK_NO_CONSOLE

Creare una console per il nuovo processo invece di ereditarla dalla console padre. Equivale a usare un flag di CREATE_NEW_CONSOLE con CreateProcess.

SEE_MASK_UNICODE

Indica un'applicazione Unicode.

hwnd

Tipo: HWND

Handle della finestra padre.

pszFile

Tipo: LPCWSTR

Puntatore a una stringa Unicode con terminazione Null che specifica il file eseguibile in cui SHCreateProcessAsUserW eseguirà l'azione specificata dal verbo runas. Il verbo runas deve essere supportato dalla classe del file.

Nota Se il percorso non è incluso nel nome del file, si presuppone che la directory corrente.
 

pszParameters

Tipo: LPCWSTR

Puntatore a una stringa Unicode con terminazione Null contenente i parametri dell'applicazione. I parametri devono essere separati da spazi.

pszCurrentDirectory

Tipo: LPCWSTR

Stringa Unicode con terminazione Null contenente la directory corrente.

hUserToken

Tipo: HANDLE

Un token di accesso che può essere usato per rappresentare un determinato utente. È necessario quando sono presenti più utenti per le cartelle considerate come appartenenti a un singolo utente. L'applicazione chiamante deve disporre di privilegi di sicurezza appropriati per l'utente specifico, inclusi TOKEN_QUERY e TOKEN_IMPERSONATE, e l'hive del Registro di sistema dell'utente deve essere attualmente montato. Per altre informazioni sui problemi di controllo di accesso, vedere Controllo di accesso.

lpProcessAttributes

Tipo: LPSECURITY_ATTRIBUTES

Puntatore a una struttura SECURITY_ATTRIBUTES con il descrittore di sicurezza per il nuovo processo. Specifica inoltre se un processo figlio può essere ereditato. Se questo parametro è impostato su NULL, il processo avrà un descrittore di sicurezza predefinito e l'handle non può essere ereditato.

avviso di sicurezza: L'uso di un descrittore di sicurezza in modo non corretto può compromettere la sicurezza dell'applicazione. Per altre informazioni, vedere SECURITY_ATTRIBUTES.

lpThreadAttributes

Tipo: LPSECURITY_ATTRIBUTES

Puntatore a una struttura SECURITY_ATTRIBUTES con il descrittore di sicurezza per il nuovo thread. Specifica inoltre se un processo figlio può essere ereditato. Se questo parametro è impostato su NULL, il processo avrà un descrittore di sicurezza predefinito e l'handle non può essere ereditato.

avviso di sicurezza: L'uso di un descrittore di sicurezza in modo non corretto può compromettere la sicurezza dell'applicazione. Per altre informazioni, vedere SECURITY_ATTRIBUTES.

bInheritHandles

Tipo: bool

Indicatore che indica se il nuovo processo eredita gli handle dal processo chiamante. Se impostato su TRUE, ogni handle aperto ereditabile nel processo chiamante viene ereditato dal nuovo processo. Gli handle ereditati hanno lo stesso valore e gli stessi privilegi di accesso degli handle originali.

dwCreationFlags

Tipo: DWORD

Flag che controllano la creazione del processo e della classe di priorità. Per un elenco dei flag disponibili, vedere CreateProcessAsUser.

lpStartupInfo

Tipo: LPSTARTUPINFOW

Puntatore a una struttura STARTUPINFO che specifica la modalità di visualizzazione della finestra principale per il nuovo processo.

lpProcessInformation

Tipo: LPPROCESS_INFORMATION

Puntatore a una struttura PROCESS_INFORMATION che riceve informazioni sul nuovo processo. Impostare questo membro su un puntatore alla struttura valido e impostare il flag di SEE_MASK_NOCLOSEPROCESS nel membro maschera e il processo rimarrà aperto al termine della funzione. I membri PROCESS_INFORMATION della struttura hProcess e hThread conterranno rispettivamente il processo e gli handle di thread. Impostare questo membro su nulle il processo verrà chiuso prima che la funzione restituisca.

Osservazioni

Per includere virgolette doppie in pszParameters, è necessario racchiudere ogni segno tra virgolette, come nell'esempio seguente:

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

In questo caso, l'applicazione riceve tre parametri: An, example:, e "quoted text".

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000 Professional, Windows XP [solo app desktop]
server minimo supportato Windows Server 2003 [solo app desktop]
intestazione shellapi.h

Vedere anche

SHELLEXECUTEINFO