Função SetDefaultDllDirectories (libloaderapi.h)

Especifica um conjunto padrão de diretórios a serem pesquisados quando o processo de chamada carregar uma DLL. Esse caminho de pesquisa é usado quando LoadLibraryEx é chamado sem sinalizadores de LOAD_LIBRARY_SEARCH .

Sintaxe

BOOL SetDefaultDllDirectories(
  [in] DWORD DirectoryFlags
);

Parâmetros

[in] DirectoryFlags

Os diretórios a serem pesquisados. Esse parâmetro pode ser qualquer combinação dos valores a seguir.

Valor Significado
LOAD_LIBRARY_SEARCH_APPLICATION_DIR
0x00000200
Se esse valor for usado, o diretório de instalação do aplicativo será pesquisado.
LOAD_LIBRARY_SEARCH_DEFAULT_DIRS
0x00001000
Esse valor é uma combinação de LOAD_LIBRARY_SEARCH_APPLICATION_DIR, LOAD_LIBRARY_SEARCH_SYSTEM32 e LOAD_LIBRARY_SEARCH_USER_DIRS.

Esse valor representa o número máximo recomendado de diretórios que um aplicativo deve incluir em seu caminho de pesquisa de DLL.

LOAD_LIBRARY_SEARCH_SYSTEM32
0x00000800
Se esse valor for usado, %windows%\system32 será pesquisado.
LOAD_LIBRARY_SEARCH_USER_DIRS
0x00000400
Se esse valor for usado, qualquer caminho explicitamente adicionado usando a função AddDllDirectory ou SetDllDirectory será pesquisado. Se mais de um diretório tiver sido adicionado, a ordem na qual esses diretórios são pesquisados não será especificada.

Valor retornado

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

O caminho de pesquisa de DLL é o conjunto de diretórios que são pesquisados para uma DLL quando um caminho completo não é especificado em uma chamada de função LoadLibrary ou LoadLibraryEx ou quando um caminho completo para a DLL é especificado, mas o sistema deve pesquisar DLLs dependentes. Para obter mais informações sobre o caminho de pesquisa de DLL padrão, consulte Ordem de pesquisa da biblioteca de vínculo dinâmico.

O caminho de pesquisa DLL padrão contém diretórios que podem ser vulneráveis a um ataque de pré-carregamento de DLL. Um aplicativo pode usar a função SetDefaultDllDirectories para especificar um caminho de pesquisa de DLL padrão para o processo que elimina os diretórios mais vulneráveis e limita os outros diretórios pesquisados. O caminho de pesquisa da DLL do processo aplica-se somente ao processo de chamada e persiste durante a vida útil do processo.

Se o parâmetro DirectoryFlags especificar mais de um sinalizador, os diretórios serão pesquisados na seguinte ordem:

  • O diretório que contém a DLL (LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR). Esse diretório é pesquisado apenas para dependências da DLL que está sendo carregada.
  • O diretório do aplicativo (LOAD_LIBRARY_SEARCH_APPLICATION_DIR).
  • Caminhos explicitamente adicionados ao caminho de pesquisa do aplicativo com a função AddDllDirectory (LOAD_LIBRARY_SEARCH_USER_DIRS) ou a função SetDllDirectory . Se mais de um caminho tiver sido adicionado, a ordem na qual os caminhos são pesquisados não será especificada.
  • O diretório Sistema (LOAD_LIBRARY_SEARCH_SYSTEM32).
Se SetDefaultDllDirectories não especificar LOAD_LIBRARY_SEARCH_USER_DIRS, os diretórios especificados com a função AddDllDirectory serão usados apenas para chamadas de função LoadLibraryEx que especificam LOAD_LIBRARY_SEARCH_USER_DIRS.

Não é possível reverter para o caminho de pesquisa DLL padrão ou remover qualquer diretório especificado com SetDefaultDllDirectories do caminho de pesquisa. No entanto, o caminho de pesquisa da DLL do processo pode ser substituído chamando LoadLibraryEx com um ou mais sinalizadores de LOAD_LIBRARY_SEARCH e diretórios adicionados com AddDllDirectory podem ser removidos chamando RemoveDllDirectory.

Windows 7, Windows Server 2008 R2, Windows Vista e Windows Server 2008: Para chamar essa função em um aplicativo, use a função GetProcAddress para recuperar seu endereço de Kernel32.dll. KB2533623 deve ser instalado na plataforma de destino.

Requisitos

   
Cliente mínimo com suporte Windows 8 [somente aplicativos da área de trabalho], KB2533623 no Windows 7, Windows Server 2008 R2, Windows Vista e Windows Server 2008
Servidor mínimo com suporte Windows Server 2012 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho libloaderapi.h (inclua Windows.h)
DLL Kernel32.dll

Confira também

AddDllDirectory

Ordem de pesquisa da biblioteca de vínculo dinâmico

Segurança da biblioteca de vínculo dinâmico

LoadLibrary

LoadLibraryEx

RemoveDllDirectory