Normalmente, as únicas bibliotecas compartilhadas são as do Visual Studio, do .NET Frameworks, do DirectX e da API do Windows. Outras bibliotecas geralmente são instaladas em cada diretório de aplicativos. Geralmente, se uma biblioteca precisar ser instalada para uso compartilhado, ela fará uma das duas coisas:
- Instale em seu próprio local em Arquivos de programas ou Arquivos de programas \ Arquivos comuns.
- Instale em \ Windows \ System32 ou (muito raramente) \ Windows. Este é um retrocesso à forma como o Windows funcionou, cerca de 10 anos atrás, e é considerado uma má prática (se não pelos programadores pelos administradores).
Em última análise, no entanto, não importa onde, no sistema de arquivos, você os coloca, desde que os usuários tenham acesso de leitura a eles. Bibliotecas dinâmicas apropriadas são registradas (a maioria responde a regsvr32 <dllname>
e regsvr32 /u <dllname>
), portanto, os aplicativos que precisam delas solicitarão ao Registro do Windows a biblioteca desejada (com base no GUID ou nome de classe) e o registro saberá onde está o arquivo. O registro aqui está agindo como um catálogo global para bibliotecas instaladas.
UPDATE:
Para referência, aqui é como o Windows pesquisa as bibliotecas especificadas pelo nome da biblioteca.
Se você especificar a classe de que precisa, existem várias maneiras de fazer isso. Por exemplo, você pode usar CoGetClassObject se conhecer o CLSID, que você pode usar com algo como CLSIDFromProgID .