Compartilhar via


Função GetCommandLineA (processenv.h)

Recupera a cadeia de caracteres de linha de comando para o processo atual.

Sintaxe

LPSTR GetCommandLineA();

Valor de retorno

O valor retornado é um ponteiro para a cadeia de caracteres de linha de comando para o processo atual.

Observações

O tempo de vida do valor retornado é gerenciado pelo sistema, os aplicativos não devem liberar ou modificar esse valor.

Os processos de console podem usar os argumentos argc e argv do principal ou funções de wmain implementando-os como o ponto de entrada do programa.

Os processos de GUI podem usar o argumento lpCmdLine das funções WinMain ou wWinMain implementando-as como o ponto de entrada do programa.

Para converter a linha de comando em uma matriz de estilo de argv de cadeias de caracteres, passe o resultado de GetCommandLineA para CommandLineToArgvW.

Nota

O nome do executável na linha de comando que o sistema operacional fornece a um processo não é necessariamente idêntico ao da linha de comando que o processo de chamada fornece à função CreateProcessA. O sistema operacional pode preparar um caminho totalmente qualificado para um nome executável fornecido sem um caminho totalmente qualificado.

Comentários de segurança

A linha de comando retornada por GetCommandLineA é uma conversão da linha de comando Unicode para a página de código do processo de 8 bits.

Para a maioria das páginas de código, essa conversão é perdida e a linha de comando convertida pode ser diferente da linha de comando Unicode, criando possíveis problemas de segurança, como o seguinte:

  • A conversão pode alterar cadeias de caracteres destinadas a serem usadas como nomes de arquivo. Por exemplo, se a página de código ANSI for Windows-1252, o caractere Unicode U+0100 (letra maiúscula latina A com macron: Ā) será convertido em 0x41 (a letra maiúscula latina A). Se um usuário passar um nome de arquivo que contém o caractere Ā, um programa que usa GetCommandLineA o receberá com o caractere A e operará no arquivo errado.
  • A conversão pode alterar a forma como a linha de comando é analisada. Por exemplo, se a página de código ANSI for Windows-1252, o caractere Unicode U+FF02 (aspas de largura completa: ") converterá em 0x22 (a aspas ASCII) e o caractere Unicode U+2010 (Hifen: <) será convertido em 0x2D (o sinal de subtração ASCII). Ambos podem resultar em argumentos de arquivo de linha de comando sendo mal interpretados como opções de linha de comando.

Para evitar esse problema, use a função GetCommandLineW para receber a linha de comando Unicode ou use um manifesto do aplicativo (no Windows Versão 1903 ou posterior) para definir UTF-8 como a página de código do processo.

Nota

O cabeçalho processenv.h define GetCommandLine como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP [aplicativos da área de trabalho | Aplicativos UWP]
servidor com suporte mínimo Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
da Plataforma de Destino Windows
cabeçalho processenv.h (inclua Windows.h no Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
biblioteca Kernel32.lib
de DLL Kernel32.dll

Consulte também

de função CreateProcessA

Funções de processo e thread