Funzione GetCommandLineA (processenv.h)
Recupera la stringa della riga di comando per il processo corrente.
Sintassi
LPSTR GetCommandLineA();
Valore restituito
Il valore restituito è un puntatore alla stringa della riga di comando per il processo corrente.
Osservazioni
La durata del valore restituito viene gestita dal sistema, le applicazioni non devono liberare o modificare questo valore.
I processi della console possono usare gli argomenti argc
I processi GUI possono usare l'argomento lpCmdLine delle funzioni WinMain o wWinMain implementandole come punto di ingresso del programma.
Per convertire la riga di comando in una matrice di stili di argv stringhe, passare il risultato da GetCommandLineA a CommandLineToArgvW.
Nota
Il nome dell'eseguibile nella riga di comando fornito dal sistema operativo a un processo non è necessariamente identico a quello fornito dal processo chiamante alla funzione CreateProcessA. Il sistema operativo può anteporre un percorso completo a un nome eseguibile fornito senza un percorso completo.
Osservazioni sulla sicurezza
La riga di comando restituita da GetCommandLineA è una conversione della riga di comando Unicode nella tabella codici del processo a 8 bit.
Per la maggior parte delle tabelle codici questa conversione è in perdita e la riga di comando convertita può differire dalla riga di comando Unicode, creando possibili problemi di sicurezza come il seguente:
- La conversione può modificare le stringhe destinate all'uso come nomi di file. Ad esempio, se la tabella codici ANSI è Windows-1252, il carattere Unicode U+0100 (lettera maiuscola latina A con ctrl: Ā) viene convertito in 0x41 (la lettera maiuscola latina A). Se un utente passa un nome di file contenente il carattere Ā, un programma che usa GetCommandLineA lo riceverà con il carattere A e funzionerà sul file errato.
- La conversione può modificare la modalità di analisi della riga di comando. Ad esempio, se la tabella codici ANSI è Windows-1252, il carattere Unicode U+FF02 (virgolette fullwidth: ") converte in 0x22 (virgolette ASCII) e il carattere Unicode U+2010 (trattino: ):) converte in 0x2D (segno meno ASCII). Entrambi questi possono comportare l'errata interpretazione degli argomenti del file della riga di comando come opzioni della riga di comando.
Per evitare questo problema, usare la funzione GetCommandLineW per ricevere la riga di comando Unicode oppure usare un manifesto dell'applicazione (in Windows versione 1903 o successiva) per impostare UTF-8 come tabella codici del processo.
Nota
L'intestazione processenv.h definisce GetCommandLine come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows XP [app desktop | App UWP] |
server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
piattaforma di destinazione | Finestre |
intestazione |
processenv.h (include Windows.h in Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
libreria |
Kernel32.lib |
dll | Kernel32.dll |