Função SetCurrentDirectory (winbase.h)

Altera o diretório atual para o processo atual.

Sintaxe

BOOL SetCurrentDirectory(
  [in] LPCTSTR lpPathName
);

Parâmetros

[in] lpPathName

O caminho para o novo diretório atual. Esse parâmetro pode especificar um caminho relativo ou um caminho completo. Em ambos os casos, o caminho completo do diretório especificado é calculado e armazenado como o diretório atual.

Para obter mais informações, consulte Nomenclatura de arquivos, caminhos e namespaces.

Por padrão, o nome é limitado a MAX_PATH caracteres.

Dica

A partir do Windows 10, versão 1607, você pode optar por remover a limitação MAX_PATH. Para obter detalhes, consulte a seção Limitação máxima do comprimento do caminho de Nomear arquivos, caminhos e namespaces.

Importante

Definir um diretório atual com mais de MAX_PATH faz com que CreateProcessW falhe.

O caractere final antes do caractere nulo deve ser uma barra invertida ('\'). Se você não especificar a barra invertida, ela será adicionada para você. Portanto, especifique >MAX_PATH-2 caracteres para o caminho, a menos que você inclua a barra invertida à direita; nesse caso, especifique MAX_PATH-1 caracteres para o caminho.

Retornar valor

Se a função for bem-sucedida, o valor retornado será diferente de zero.

Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.

Comentários

Cada processo tem um único diretório atual composto por duas partes:

  • Um designador de disco que é uma letra de unidade seguida por dois-pontos ou um nome de servidor e um nome de compartilhamento (\\servername\sharename)
  • Um diretório no designador de disco

O diretório atual é compartilhado por todos os threads do processo: se um thread alterar o diretório atual, ele afetará todos os threads no processo.

Aplicativos multithread e código de biblioteca compartilhada devem evitar chamar a função SetCurrentDirectory devido ao risco de afetar cálculos relativos de caminho sendo executados por outros threads. Inversamente

Aplicativos multithread e código de biblioteca compartilhada devem evitar o uso de caminhos relativos para que não sejam afetados por alterações no diretório atual executadas por outros threads.

Observação

O diretório atual de um processo é bloqueado enquanto o processo está em execução. Isso impede que o diretório seja excluído, movido ou renomeado.

No Windows 8 e Windows Server 2012, essa função é compatível com as tecnologias a seguir.

Tecnologia Com suporte
Protocolo SMB (SMB) 3.0 Sim
TFO (Failover transparente) do SMB 3.0 Sim
SMB 3.0 com compartilhamentos de arquivos de expansão (SO) Sim
Sistema de arquivos de Volume Compartilhado Clusterizado (CsvFS) Sim
ReFS (Sistema de Arquivos Resiliente) Sim

Exemplos

Para obter um exemplo, consulte Alterando o diretório atual.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho winbase.h (inclua Windows.h)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também