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 |
---|---|
|
Se esse valor for usado, o diretório de instalação do aplicativo será pesquisado. |
|
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. |
|
Se esse valor for usado, %windows%\system32 será pesquisado. |
|
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).
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
Ordem de pesquisa da biblioteca de vínculo dinâmico