Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Windows Vista apresenta novos cenários de armazenamento e um novo namespace de perfil de usuário. Para lidar com esses novos fatores, o sistema mais antigo de referência a pastas padrão por um valor CSIDL foi substituído. A partir do Windows Vista, essas pastas são referenciadas por um novo conjunto de valores GUID chamado IDs de Pasta Conhecida.
O sistema de pastas conhecidas fornece estas vantagens:
- Os ISVs (fornecedores independentes de software) podem estender o conjunto de IDs de pasta conhecida com as próprias. Eles podem definir pastas, fornecer IDs e registrá-las no sistema. Valores CSIDL não puderam ser estendidos.
- Todas as pastas conhecidas em um sistema podem ser enumeradas. Nenhuma API forneceu essa funcionalidade para valores CSIDL. Consulte IKnownFolderManager::GetFolderIds para obter mais informações.
- Uma pasta conhecida adicionada por um ISV pode adicionar propriedades personalizadas que permitem explicar sua finalidade e o uso pretendido.
- Muitas pastas conhecidas podem ser redirecionadas para novos locais, incluindo locais de rede. No sistema CSIDL, somente a pasta Meus Documentos pode ser redirecionada.
- Pastas conhecidas podem ter manipuladores personalizados para uso durante a criação ou exclusão.
O sistema CSIDL e as APIs que fazem uso de valores CSIDL ainda têm suporte para compatibilidade. No entanto, não é recomendável usá-los em nenhum novo desenvolvimento.
Importante
Para códigos novos, sempre use SHGetKnownFolderPath com as constantes KNOWNFOLDERID. Os valores SHGetFolderPath e CSIDL mais antigos são preteridos e não devem ser usados em novos aplicativos.
Ao chamar SHGetKnownFolderPath:
- Você deve chamar CoInitializeEx antes de usar essa função (COM deve ser inicializado no thread de chamada).
- Você deve liberar a cadeia de caracteres retornada com CoTaskMemFree quando terminar. Não fazer isso causa um vazamento de memória.
- Para aplicativos .NET, use Environment.GetFolderPath ou Windows.Storage.KnownFolders (WinRT), em vez de invocar diretamente funções de shell do P/Invoke.
Os tópicos a seguir discutem as especificidades do sistema de Pastas Conhecidas.
- trabalhando com pastas conhecidas em aplicativos
- Como estender pastas conhecidas com pastas personalizadas
- KNOWNFOLDERID
As páginas de referência a seguir explicam as funções Pastas Conhecidas do Win32, que podem ser usadas para recuperar o local das Pastas Conhecidas ou redirecioná-las para um novo local. Essas funções substituem funções Win32 mais antigas. As novas funções são fornecidas para fornecer comportamento equivalente às funções antigas, mas cada nova função também é duplicada por uma API COM (Component Object Model).
| Nova função | Substitui | EQUIVALENTE AO COM |
|---|---|---|
| SHGetKnownFolderPath | SHGetFolderPath | IKnownFolder::GetPath |
| SHGetKnownFolderIDList | SHGetFolderLocation | IKnownFolder::GetIDList |
| SHSetKnownFolderPath | SHSetFolderPath | IKnownFolder::SetPath |
As páginas de referência a seguir explicam as APIs COM de Pastas Conhecidas, que fornecem toda a funcionalidade das APIs Win32 listadas acima, além de permitirem enumerar todas as Pastas Conhecidas, acessar suas propriedades e estender o conjunto padrão de Pastas Conhecidas.
Um exemplo de C++ que demonstra as APIs de Pasta Conhecida está incluído no SDK (Kit de Desenvolvimento de Software) do Windows. Depois de instalar o SDK do Windows em seu computador, o exemplo pode ser encontrado em %ProgramFiles%\Microsoft SDKs\Windows\v6.0\Samples\WinUI\Shell\AppPlatform\KnownFolders.