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