Função SHGetFolderPathA (shlobj_core.h)
Preterido. Obtém o caminho de uma pasta identificada por um valor CSIDL .
Sintaxe
SHFOLDERAPI SHGetFolderPathA(
[in] HWND hwnd,
[in] int csidl,
[in] HANDLE hToken,
[in] DWORD dwFlags,
[out] LPSTR pszPath
);
Parâmetros
[in] hwnd
Digite: HWND
Reservado.
[in] csidl
Tipo: int
Um valor CSIDL que identifica a pasta cujo caminho deve ser recuperado. Somente pastas reais são válidas. Se uma pasta virtual for especificada, essa função falhará. Você pode forçar a criação de uma pasta combinando o CSIDL da pasta com CSIDL_FLAG_CREATE.
[in] hToken
Tipo: HANDLE
Um token de acesso que pode ser usado para representar um usuário específico.
Microsoft Windows 2000 e versões anteriores: Sempre defina esse parâmetro como NULL.
Windows XP e posterior: Esse parâmetro geralmente é definido como NULL, mas talvez seja necessário atribuir um valor não NULL ao hToken para as pastas que podem ter vários usuários, mas são tratadas como pertencentes a um único usuário. A pasta mais usada desse tipo é Documentos.
O processo de chamada é responsável pela representação correta quando hToken não é NULL. O processo de chamada deve ter privilégios de segurança apropriados para o usuário específico, incluindo TOKEN_QUERY e TOKEN_IMPERSONATE, e o hive do registro do usuário deve estar montado no momento. Confira Controle de Acesso para obter mais discussões sobre problemas de controle de acesso.
Atribuir ao parâmetro hToken um valor de -1 indica o Usuário Padrão. Isso permite que os clientes do SHGetFolderPath encontrem locais de pasta (como a pasta Área de Trabalho) para o Usuário Padrão. O perfil de usuário usuário padrão é duplicado quando qualquer nova conta de usuário é criada e inclui pastas especiais, como Meus Documentos e Área de Trabalho. Todos os itens adicionados à pasta Usuário Padrão também aparecem em qualquer nova conta de usuário.
[in] dwFlags
Tipo: DWORD
Sinalizadores que especificam o caminho a ser retornado. Esse valor é usado nos casos em que a pasta associada a um KNOWNFOLDERID (ou CSIDL) pode ser movida, renomeada, redirecionada ou perambulada entre idiomas por um usuário ou administrador.
O sistema de pastas conhecido que está por trás de SHGetFolderPath permite que usuários ou administradores redirecionem uma pasta conhecida para um local que atenda às suas necessidades. Isso é feito chamando IKnownFolderManager::Redirect, que define o valor "atual" da pasta associada ao sinalizador SHGFP_TYPE_CURRENT.
O valor padrão da pasta, que é o local da pasta se um usuário ou administrador não a tiver redirecionado para outro lugar, será recuperado especificando o sinalizador SHGFP_TYPE_DEFAULT. Esse valor pode ser usado para implementar um recurso de "restaurar padrões" para uma pasta conhecida.
Por exemplo, o valor padrão (SHGFP_TYPE_DEFAULT) para FOLDERID_Music (CSIDL_MYMUSIC) é "C:\Users\user name\Music". Se a pasta tiver sido redirecionada, o valor atual (SHGFP_TYPE_CURRENT) poderá ser "D:\Música". Se a pasta não tiver sido redirecionada, SHGFP_TYPE_DEFAULT e SHGFP_TYPE_CURRENT recuperar o mesmo caminho.
SHGFP_TYPE_CURRENT
Recupere o caminho atual da pasta.
SHGFP_TYPE_DEFAULT
Recupere o caminho padrão da pasta.
[out] pszPath
Tipo: LPTSTR
Um ponteiro para uma cadeia de caracteres terminada em nulo de comprimento MAX_PATH que receberá o caminho. Se ocorrer um erro ou S_FALSE for retornado, essa cadeia de caracteres estará vazia. O caminho retornado não inclui uma barra invertida à direita. Por exemplo, "C:\Users" é retornado em vez de "C:\Users\".
Retornar valor
Tipo: HRESULT
Se essa função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.
Comentários
Essa função é um superconjunto de SHGetSpecialFolderPath.
Há suporte apenas para alguns valores CSIDL , incluindo o seguinte:
- CSIDL_ADMINTOOLS
- CSIDL_APPDATA
- CSIDL_COMMON_ADMINTOOLS
- CSIDL_COMMON_APPDATA
- CSIDL_COMMON_DOCUMENTS
- CSIDL_COOKIES
- CSIDL_FLAG_CREATE
- CSIDL_FLAG_DONT_VERIFY
- CSIDL_HISTORY
- CSIDL_INTERNET_CACHE
- CSIDL_LOCAL_APPDATA
- CSIDL_MYPICTURES
- CSIDL_PERSONAL
- CSIDL_PROGRAM_FILES
- CSIDL_PROGRAM_FILES_COMMON
- CSIDL_SYSTEM
- CSIDL_WINDOWS
Exemplos
O exemplo de código a seguir usa SHGetFolderPath para localizar ou criar uma pasta e, em seguida, cria um arquivo nela.
TCHAR szPath[MAX_PATH];
if(SUCCEEDED(SHGetFolderPath(NULL,
CSIDL_PERSONAL|CSIDL_FLAG_CREATE,
NULL,
0,
szPath)))
{
PathAppend(szPath, TEXT("New Doc.txt"));
HANDLE hFile = CreateFile(szPath, ...);
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional, Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | shlobj_core.h (inclua Shlobj.h, Shlobj_core.h) |
Biblioteca | Shell32.lib |
DLL | Shell32.dll (versão 5.0 ou posterior) |