Função SHGetFolderPathW (shlobj_core.h)
Preterido. Obtém o caminho de uma pasta identificada por um valor CSIDL .
Sintaxe
SHFOLDERAPI SHGetFolderPathW(
[in] HWND hwnd,
[in] int csidl,
[in] HANDLE hToken,
[in] DWORD dwFlags,
[out] LPWSTR 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 anterior: 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. Consulte 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 do 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 "padrões de restauração" 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 foi redirecionada, o valor atual (SHGFP_TYPE_CURRENT) pode 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: LPWSTR
Um ponteiro para uma cadeia de caracteres de comprimento terminada em nulo 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, ...);
}
Observação
O cabeçalho shlobj_core.h define SHGetFolderPath como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.
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) |