Condividi tramite


Struttura SHCREATEPROCESSINFOW (shellapi.h)

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

Contiene le informazioni necessarie da 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;

Members

cbSize

Tipo: DWORD

Dimensione, in byte, della struttura.

fMask

Tipo: ULONG

Matrice di flag che indica il contenuto e la validità degli altri membri della struttura. Questa può essere 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 casella di messaggio di errore se si verifica un errore.

SEE_MASK_HMONITOR

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

SEE_MASK_NOCLOSEPROCESS

L'applicazione chiuderà il processo. Se il membro lpProcessInformation è un puntatore PROCESS_INFORMATION valido e SEE_MASK_NOCLOSEPROCESS è impostato, il processo rimarrà aperto quando SHCreateProcessAsUserW restituisce. I membri hProcess e hThread della struttura PROCESS_INFORMATION contengono rispettivamente il processo e gli handle di thread. Questo flag è 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 SHCreateProcessAsUserW restituisca, anche se lpProcessInformation è un puntatore valido.

SEE_MASK_NO_CONSOLE

Creare una console per il nuovo processo anziché averlo ereditato 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 di 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 con il 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

Token di accesso che può essere usato per rappresentare un utente specifico. È necessario quando sono presenti più utenti per tali cartelle considerate come appartenenti a un singolo utente. L'applicazione chiamante deve avere privilegi di sicurezza appropriati per l'utente specifico, tra cui TOKEN_QUERY e TOKEN_IMPERSONATE, e l'hive del Registro di sistema dell'utente deve essere attualmente montato. Per altre discussioni sui problemi di controllo degli accessi, vedere Controllo di accesso.

lpProcessAttributes

Tipo: LPSECURITY_ATTRIBUTES

Puntatore a una struttura SECURITY_ATTRIBUTES con il descrittore di sicurezza per il nuovo processo. Specifica anche 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 errato 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 anche 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 errato può compromettere la sicurezza dell'applicazione. Per altre informazioni, vedere SECURITY_ATTRIBUTES.

bInheritHandles

Tipo: BOOL

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

dwCreationFlags

Tipo: DWORD

Flag che controllano la creazione del processo e la 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 della struttura valido e impostare il flag di SEE_MASK_NOCLOSEPROCESS nel membro fMask e il processo rimarrà aperto quando la funzione restituisce. I membri hProcess e hThread della struttura PROCESS_INFORMATION conterranno rispettivamente i handle di processo e thread. Impostare questo membro su NULL e il processo verrà chiuso prima che la funzione venga restituita.

Commenti

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

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

In questo caso, l'applicazione riceve tre parametri: un esempio: e "testo virgolette".

Requisiti

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

Vedi anche

SHELLEXECUTEINFO