Função WinExec (winbase.h)
Executa o aplicativo especificado.
Sintaxe
UINT WinExec(
[in] LPCSTR lpCmdLine,
[in] UINT uCmdShow
);
Parâmetros
[in] lpCmdLine
A linha de comando (nome do arquivo mais parâmetros opcionais) para o aplicativo a ser executado. Se o nome do arquivo executável no parâmetro lpCmdLine não contiver um caminho de diretório, o sistema pesquisará o arquivo executável nesta sequência:
- O diretório do qual o aplicativo foi carregado.
- O diretório atual.
- O diretório do sistema Windows. A função GetSystemDirectory recupera o caminho desse diretório.
- O diretório do Windows. A função GetWindowsDirectory recupera o caminho desse diretório.
- Os diretórios listados na variável de ambiente PATH.
[in] uCmdShow
As opções de exibição. Para obter uma lista dos valores aceitáveis, consulte a descrição do parâmetro nCmdShow da função ShowWindow .
Retornar valor
Se a função for bem-sucedida, o valor retornado será maior que 31.
Se a função falhar, o valor retornado será um dos valores de erro a seguir.
Valor/código retornado | Descrição |
---|---|
|
O sistema está sem memória ou recursos. |
|
O arquivo .exe é inválido. |
|
O arquivo especificado não foi encontrado. |
|
O caminho especificado não foi encontrado. |
Comentários
A função WinExec retorna quando o processo iniciado chama a função GetMessage ou um limite de tempo limite é atingido. Para evitar aguardar o atraso de tempo limite, chame a função GetMessage o mais rápido possível em qualquer processo iniciado por uma chamada para WinExec.
Comentários de segurança
O nome executável é tratado como a primeira cadeia de caracteres delimitada por espaço em branco em lpCmdLine. Se o nome do executável ou caminho tiver um espaço, há o risco de que um executável diferente possa ser executado devido à maneira como a função analisa espaços. O exemplo a seguir é perigoso porque a função tentará executar "Program.exe", se existir, em vez de "MyApp.exe".WinExec("C:\\Program Files\\MyApp", ...)
Se um usuário mal-intencionado criar um aplicativo chamado "Program.exe" em um sistema, qualquer programa que chame o WinExec incorretamente usando o diretório Arquivos de Programas executará esse aplicativo em vez do aplicativo pretendido.
Para evitar esse problema, use CreateProcess em vez de WinExec. No entanto, se você precisar usar WinExec por motivos herdados, verifique se o nome do aplicativo está entre aspas, conforme mostrado no exemplo abaixo.
WinExec("\"C:\\Program Files\\MyApp.exe\" -L -S", ...)
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | winbase.h (incluir Windows.h) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |
Conjunto de APIs | ext-ms-win-kernel32-process-l1-1-0 (introduzido no Windows 10, versão 10.0.14393) |