Compartilhar via


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.

Value Meaning
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 adicionado explicitamente 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 de retorno

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

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

Observações

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 procurar por DLLs dependentes. Para obter mais informações sobre o caminho de pesquisa de DLL padrão, consulte Dynamic-Link Ordem de Pesquisa da Biblioteca.

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 de DLL do processo aplica-se apenas 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 por dependências da DLL que está sendo carregada.
  • O diretório do aplicativo (LOAD_LIBRARY_SEARCH_APPLICATION_DIR).
  • Caminhos adicionados explicitamente 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 do 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 de DLL do processo pode ser substituído chamando LoadLibraryEx com um ou mais sinalizadores LOAD_LIBRARY_SEARCH e os 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.

Requirements

Requirement Value
Cliente mínimo suportado 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 compatível Windows Server 2012 [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
Header libloaderapi.h (inclua Windows.h)
Library kernel32. Lib
de DLL Kernel32.dll

Consulte também

AddDllDirectory

Ordem de Pesquisa da BibliotecaDynamic-Link

Segurança da Biblioteca deDynamic-Link

LoadLibrary

LoadLibraryEx

RemoveDllDirectory