Arquivos virtuais são abertos a partir de arquivos temporários da Internet
Pergunta
Eu criei uma extensão de namespace com raiz no Desktop.O principal objetivo da extensão é fornecer uma lista virtual de arquivos ZIP que representam uma lista de diretórios configuráveis.Quando o usuário clica em um desses itens, o conteúdo do diretório relacionado é compactado e o arquivo ZIP resultante é armazenado em uma pasta de cache.
Tudo isso funciona bem, exceto por um problema menor.Se formos ao Windows Explorer, abra a extensão e clique duas vezes em um item, o arquivo aberto é o do cache.[CORRETO]
Se por outro lado o abrirmos por meio de uma caixa de diálogo aberta, o arquivo aberto será de um diretório de arquivos temporários da Internet.[INCORRETA]
O que devo alterar para a caixa de diálogo Abrir (quando usada, por exemplo, através do notepad.exe) para abrir o arquivo da pasta cache e não dos arquivos temporários da Internet.Tentei enviar sempre o nome do arquivo qualificado em IShellFolder::GetDisplayNameOf, mas sem sorte.
Solução 2
O problema foi resolvido mascarando SFGAO_FILESYSTEM
nos atributos retornados pela implementação do método de interface IShellFolder::GetAttributesOf.
Outras dicas
Parece que você não está passando o diretório inicial correto (no parâmetro lpstrInitialDir ou lpstrFile da sua estrutura OPENFILENAME).
Digite seu diretório de cache em lpstrInitialDir e deixe lpstrFile em branco e deve funcionar.