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.
A pasta de dados do usuário (UDF) é uma pasta armazenada na máquina do usuário, que contém dados relacionados ao aplicativo host e ao WebView2. Os aplicativos WebView2 usam pastas de dados do usuário para armazenar dados do navegador, como cookies, permissões e recursos armazenados em cache.
Terminologia
| Termo | Definição |
|---|---|
| pasta de dados do usuário | Uma pasta que o WebView2 cria para armazenar dados do navegador, como cookies, permissões e recursos armazenados em cache. |
| UDF | A pasta de dados do usuário. |
| Local da UDF | O caminho do diretório da pasta de dados do usuário. |
| local padrão da UDF | O caminho de diretório padrão da pasta de dados do usuário. O caminho do diretório em que o WebView2 cria a UDF se você não especificar um local de UDF personalizado. |
| Local de UDF personalizado | Um local personalizado para a pasta dados do usuário. O caminho do diretório que seu aplicativo host WebView2 especifica onde o WebView2 criará a pasta de dados do usuário. |
O WebView2 cria a UDF no local padrão da plataforma ou no local da UDF personalizada que seu aplicativo host especifica explicitamente.
Por padrão, o WebView2 cria uma UDF no local padrão para a plataforma específica. Isso funciona bem em algumas plataformas, mas não em outras. Se o aplicativo tiver necessidades específicas, você poderá especificar um local de UDF personalizado.
Locais UDF personalizados adequados
Se você especificar um local de UDF personalizado, ele deverá atender aos seguintes requisitos:
O local da UDF personalizada deve ter permissões de leitura/gravação apropriadas para o tempo de execução do aplicativo WebView2.
Evite armazenar configurações do usuário em uma unidade de rede. Isso pode resultar em lentidão, falhas ou perda de dados.
Que tipo de dados são armazenados na UDF
Os aplicativos WebView2 usam pastas de dados do usuário (UDFs) para armazenar dados do navegador, como cookies, permissões e recursos armazenados em cache.
| Tipos de dados | Descrição |
|---|---|
AllDomStorage |
Dados de armazenamento DOM, agora e no futuro. Esse tipo de dados de FileSystemsnavegação inclui , IndexedDb, WebSqlCacheStorage, . |
AllProfile |
Todos os dados do perfil, agora e no futuro. Esses são dados de perfil que devem ser apagados para parecer um novo perfil. Isso não exclui dados no escopo da conta, como senhas, mas remove o acesso aos dados no escopo da conta desconectando o usuário. Esse tipo de dados de navegação inclui os tipos AllSitede dados , DiskCache, DownloadHistory, BrowsingHistoryGeneralAutofillPasswordAutosavee .Settings |
AllSite |
Todos os dados do site, agora e no futuro. Esse tipo de dados de navegação inclui os tipos AllDomStorage de dados e Cookies. |
BrowsingHistory |
Dados do histórico de navegação. |
CacheStorage |
Dados armazenados pela API DOM CacheStorage. |
Cookies |
Dados de cookies HTTP. |
DiskCache |
Cache de disco. |
DownloadHistory |
Dados do histórico de downloads. |
FileSystems |
Dados dos sistemas de arquivos. |
GeneralAutofill |
Dados gerais do formulário de preenchimento automático. Isso exclui informações de senha e inclui informações como nomes, endereços de rua e email, números de telefone, entradas arbitrárias e dados de pagamento. |
IndexedDb |
Dados armazenados pelo recurso IndexedDB DOM. |
LocalStorage |
Dados armazenados pela API DOM localStorage. |
PasswordAutosave |
Dados de salvamento automático de senha. |
Settings |
Dados de configurações. |
WebSql |
Dados armazenados pela API DOM do banco de dados SQL Web. (O suporte ao SQL na Web foi removido do Microsoft Edge; confira Alterações de alto impacto na compatibilidade do site – alterações que afetam o Microsoft Edge.) |
Os tipos de dados acima são listados como membros de enumeração na enumeração CoreWebView2BrowsingDataKinds .
Como e quando a UDF é criada
A pasta de dados do usuário (UDF) é criada para seu aplicativo host WebView2 pelo controle WebView2.
A UDF é criada no local padrão da UDF para a plataforma ou, se o aplicativo host especificar um local personalizado da UDF, a UDF será criada no local personalizado da UDF.
A UDF é criada na inicialização do aplicativo host WebView2, se a UDF não existir.
Quantas UDFs são criadas?
Cada instância de um controle WebView2 está associada a uma sessão WebView2.
- Cada sessão do WebView2 tem exatamente uma UDF.
- Uma UDF só pode ter no máximo uma sessão WebView2 por vez.
Um controle WebView2 compartilha sua sessão WebView2 com qualquer outro controle WebView2 que use a mesma UDF. Isso é verdadeiro se os controles WebView2 estão no mesmo aplicativo host ou em aplicativos host diferentes. No entanto, uma UDF só pode ser compartilhada entre aplicativos host que estejam na mesma sessão de logon (mais especificamente, apenas um HDESKTOP). Consulte Modelo de processo para aplicativos WebView2.
Como mover a UDF
Para mover uma UDF (pasta de dados do usuário):
Encerre todas as sessões do WebView2.
Mova o conteúdo da UDF para o novo local de UDF personalizado.
Inicie uma nova sessão de aplicativo host WebView2, especificando o novo local de UDF personalizado.
O local padrão da UDF
O local padrão da UDF (pasta de dados do usuário) varia de acordo com a plataforma.
Nessa plataforma, o local padrão da UDF é o diretório no qual o executável do aplicativo (.exe) está sendo executado. A UDF padrão é o caminho executável (exe) do seu aplicativo + .WebView2. O nome do arquivo da UDF é o caminho executável (exe) do seu aplicativo + .WebView2.
Por exemplo, se você executou D:\WebView2App\WebView2.exe, uma pasta UDF seria criada: D:\WebView2App\WebView2.exe.WebView2\. Como outro exemplo: WebView2APISample.exe.WebView2\.
Você deve usar a localização UDF padrão ou personalizada?
Na maioria dos casos, você deve especificar um local de UDF personalizado, em vez de usar o local padrão da UDF. Isso garante que o controle WebView2 tenha acesso de gravação para que o controle WebView2 seja capaz de criar a UDF e, em seguida, gravar nela. Consulte Especificar uma localização personalizada da UDF, abaixo.
Embalagem:
O empacotamento MSIX do Win32 é autônomo .exe.
Especificar um local de UDF personalizado
Como especificar um local de UDF (pasta de dados do usuário) personalizado varia de acordo com a plataforma.
Nessa plataforma, na maioria dos casos, você deve especificar um local de UDF personalizado, em vez de usar o local de UDF padrão. Isso garante que o controle WebView2 tenha acesso de gravação para que o controle WebView2 seja capaz de criar a UDF e, em seguida, gravar nela.
Você deve especificar a mesma pasta em que todos os outros dados do aplicativo são armazenados.
Como especificar uma localização personalizada da UDF:
Use ICoreWebView2Environment e o userDataFolder parâmetro. Mas use o código abaixo, que é do WebView2Samples repositório.
Código de exemplo:
std::wstring m_userDataFolder;
m_userDataFolder = L"C:\\MyAppUserDataFolder";
auto options = Microsoft::WRL::Make<CoreWebView2ExperimentalEnvironmentOptions>();
HRESULT hr = CreateCoreWebView2EnvironmentWithOptions(
NULL, m_userDataFolder.c_str(), options.Get(),
Callback<ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler>(
this, &AppWindow::OnCreateEnvironmentCompleted)
.Get());
Para obter o código de exemplo, consulte o arquivo Win32-appropriate .cpp ou .cs próximo ao > repositório WebView2Samples WebView2APISample.
Onde os dados do navegador são armazenados na UDF:
Após a criação da sessão e da UDF, os dados do navegador do controle WebView2 são armazenados em uma subpasta de userDataFolder.
Por que você deve usar uma localização de UDF personalizada nesta plataforma:
Se você não especificar um local de UDF personalizado, o local padrão poderá produzir uma falha em tempo de execução, se estiver usando tecnologias de instalador, pois as tecnologias de instalador colocam o aplicativo e, portanto, a UDF em uma área protegida do sistema de arquivos, em que o WebView2 não é capaz de criar a UDF e, portanto, a criação de UDF geralmente falhará. O WebView2 lançará um erro para informar ao aplicativo host que a UDF não pode ser criada naquele local.
Se o aplicativo host estiver sendo executado de um local ao qual o usuário não tem acesso de gravação, o WebView2 não será capaz de criar a UDF e você receberá um erro de tempo de execução durante a inicialização do WebView2.
Recuperando o local da UDF
Para descobrir como o local da pasta de dados do usuário (UDF) foi definido, use a CoreWebView2Environment.UserDataFolder propriedade. Essa propriedade somente leitura retorna o local da UDF para a sessão do WebView2.
Motivos pelos quais você pode querer ler a localização da UDF:
- Se você deseja limpar os dados de navegação da pasta UDF, como no final de uma sessão.
- Se você quiser excluir a UDF.
Use o ICoreWebView2Environment7.get_UserDataFolder de propriedade Win32. Essa página de referência da API contém um código de exemplo que mostra como ler a UserDataFolder propriedade.
Código de exemplo:
auto environment7 = m_webViewEnvironment.try_query<ICoreWebView2Environment7>();
CHECK_FEATURE_RETURN(environment7);
wil::unique_cotaskmem_string userDataFolder;
environment7->get_UserDataFolder(&userDataFolder);
Para obter exemplos de leitura da UserDataFolder propriedade, consulte os exemplos de Win32 no repositório WebView2Samples.
Limpando espaço no UDF
Em vez de excluir toda a pasta de dados do usuário (UDF), você pode usar APIs WebView2 para limpar dados de navegação específicos da UDF. Por exemplo, você pode limpar os dados e o histórico do usuário quando um usuário sai do seu aplicativo.
Consulte Limpar dados de navegação da pasta de dados do usuário.
Tratamento de mensagens de erro
Se a UDF (pasta de dados do usuário) não tiver permissões de gravação, as seguintes cadeias de caracteres de mensagem de erro poderão ser retornadas:
User data folder cannot be created because a file with the same name already exists.Unable to create user data folder, Access Denied.
O acima é verdadeiro independentemente de o local da pasta de dados do usuário ser o local da UDF padrão ou um local de UDF personalizado.
Se não houver memória suficiente, se o tempo de execução do Microsoft Edge não puder ser iniciado ou se o tempo de execução WebView2 não for encontrado, cadeias de caracteres de mensagem de erro semelhantes a estas poderão ser retornadas:
Microsoft Edge runtime unable to startFailed to create WebView2 environment
Adicione código, como try/catch código, para lidar com esses erros. Esses erros tendem a ser erros fatais dos quais você não pode se recuperar, portanto try/catch , impedirão que o aplicativo falhe. Em seguida, você poderá detectar a falha e fechar o aplicativo normalmente. Alguns erros são irrecuperáveis, como Access Denied ao tentar usar uma pasta de dados do usuário para a qual você não tem permissões de gravação.
As cadeias de caracteres de mensagem de erro são exibidas em uma caixa de diálogo.
Persistência de pastas de dados do usuário em vários cenários
Seu aplicativo host controla o tempo de vida da pasta de dados do usuário (UDF). Se seu aplicativo reutilizar dados do usuário de sessões de aplicativo, considere salvar (ou seja, não excluir) as UDFs.
Se o aplicativo não reutilizar os dados do usuário das sessões do aplicativo, você poderá excluir a UDF. No entanto, enquanto uma sessão está em execução, é melhor chamar os métodos limpar dados de navegação em vez de excluir a UDF.
Pastas de dados do usuário persistentes se o mesmo usuário usar seu aplicativo repetidamente e o conteúdo da Web do aplicativo depender dos dados do usuário
Nesse cenário, não exclua explicitamente a UDF (pasta de dados do usuário); persistir os dados.
Pastas de dados do usuário persistentes se vários usuários usarem seu aplicativo repetidamente
Se vários usuários usarem seu aplicativo repetidamente, você deverá criar uma nova UDF (pasta de dados do usuário) para cada novo usuário e salvar a UDF de cada usuário.
O controle WebView2 cria uma nova UDF para cada novo usuário. O controle WebView2 cria uma UDF por sessão. Se houver várias sessões do WebView2, o controle WebView2 criará várias UDFs. Normalmente, se o aplicativo host tiver mais de uma instância de controle do WebView2, o aplicativo host deverá apontar todas as instâncias do WebView2 para a mesma UDF.
Cada aplicativo host que tem uma instância de controle WebView2 terá sua própria UDF. Seu aplicativo host pode fazer com que cada UDF aponte para o mesmo local.
Se o seu aplicativo host for para vários usuários, você provavelmente deverá criar uma UDF por usuário. Se o aplicativo foi instalado por usuário, é assim que funciona.
Se você iniciar duas cópias do seu aplicativo host, elas usarão a mesma UDF.
- Para aplicativos host Win32, a UDF não é removida automaticamente.
- Para aplicativos host .NET (WPF & WinForms), a UDF não é removida automaticamente.
- Para aplicativos host ClickOnce, a UDF é removida automaticamente.
- Para aplicativos host WinUI 2 (UWP), a UDF não é removida automaticamente.
- Para aplicativos host WinUI 3, a UDF não é removida automaticamente.
Desinstalar um aplicativo host
A desinstalação de um aplicativo host WebView2 usa o processo de desinstalação padrão; esse processo não é exclusivo do WebView2.
Durante a desinstalação, o instalador pode precisar limpar qualquer UDF criada. Em alguns casos, talvez você queira preservar a UDF.
Se você criar o aplicativo host, criar um instalador MSIX, instalar o aplicativo host e, em seguida, executar o aplicativo host, ele criará a UDF. Mas então, se você desinstalar o aplicativo host, isso não fará a limpeza automática da UDF (porque o desinstalador protege e preserva os dados do usuário), portanto, seu processo de desinstalação precisa estar ciente dessa consideração.
Nos aplicativos ClickOnce, ele é instalado em um único local e, quando a sessão termina, exclui a árvore inteira, de modo que a UDF é excluída automaticamente. Isso é por causa de como o ClickOnce funciona, não por causa de como o WebView2 funciona.
Pastas de dados do usuário persistentes se o aplicativo não tiver usuários repetidos
Nesse cenário, crie uma nova UDF (pasta de dados do usuário) para cada usuário e exclua a UDF anterior.
Excluindo pastas de dados do usuário
Seu aplicativo host ou o desinstalador pode excluir a pasta de dados do usuário (UDF). Talvez seja necessário excluir UDFs por qualquer um dos seguintes motivos:
Se você quiser desinstalar um aplicativo empacotado da Windows Store. Nesse caso, o Windows exclui as UDFs automaticamente.
Se você quiser limpar todo o histórico de dados de navegação. No entanto, consulte primeiro os métodos limpar dados de navegação como uma abordagem mais fácil e flexível.
Se você quiser se recuperar da corrupção de dados.
Se você quiser remover dados da sessão anterior.
Se você quiser alterar o local da UDF. Se você alterar o local da UDF, a UDF anterior não será limpa automaticamente.
Encerre a sessão do WebView2 antes de excluir a UDF
Para excluir uma pasta de dados do usuário (UDF), você deve primeiro encerrar a sessão WebView2. Você não pode excluir uma UDF se a sessão WebView2 estiver ativa no momento.
Aguarde a saída dos processos do navegador antes de excluir a UDF
Se os arquivos ainda estiverem em uso após o fechamento do aplicativo host WebView2, aguarde a saída dos processos do navegador antes de excluir a UDF (pasta de dados do usuário).
Files em UDFs ainda podem estar em uso após o fechamento do aplicativo WebView2. Nessa situação, aguarde a saída do processo do navegador e de todos os processos filho antes de excluir a UDF. Para monitorar os processos para aguardar a saída, recupere a ID do processo do navegador usando a BrowserProcessId propriedade da instância do aplicativo WebView2.
Compartilhamento de pastas de dados do usuário
As instâncias de controle WebView2 podem compartilhar as mesmas UDFs (pastas de dados do usuário) para fazer o seguinte:
Otimize os recursos do sistema executando em um processo do navegador. Consulte Modelo de processo para aplicativos WebView2.
Tenha controles WebView2 com perfis diferentes, para separar o armazenamento de dados do navegador, como cookies, permissões e recursos armazenados em cache na mesma UDF. Consulte Suporte a vários perfis em uma única pasta de dados do usuário.
Considere o seguinte ao compartilhar UDFs:
- Ao recriar controles WebView2 para atualizar versões do navegador usando manipuladores de eventos add_NewBrowserVersionAvailable (Win32) ou eventos NewBrowserVersionAvailable (.NET), seu aplicativo host deve garantir que os processos do navegador saiam e fechem todos os controles WebView2 que compartilhem a mesma UDF. Para recuperar a ID do processo do navegador, use a
BrowserProcessIdpropriedade do controle WebView2.
Evite executar muitas pastas ao mesmo tempo
Para isolar diferentes partes do seu aplicativo ou quando o compartilhamento de dados entre os controles WebView2 não é necessário, você pode usar diferentes pastas de dados do usuário (UDFs). Por exemplo, um aplicativo pode consistir em dois controles WebView2, um para exibir um anúncio e outro para exibir o conteúdo do aplicativo. Você pode usar UDFs diferentes para cada controle WebView2.
Cada processo do navegador WebView2 consome memória e espaço em disco adicionais. Portanto, evite executar um controle WebView2 com muitas UDFs diferentes ao mesmo tempo.
Em vez de várias UDFs, você pode usar vários perfis para obter a separação do armazenamento de dados do navegador para diferentes controles WebView2. Cada perfil salva os dados do navegador em uma pasta dedicada na mesma UDF compartilhada. Consulte Suporte a vários perfis em uma única pasta de dados do usuário.
Confira também
- Suporta vários perfis em uma única pasta de dados do usuário
- Limpar dados de navegação da pasta de dados do usuário
- Empacote e implante em documentos de Desenvolvimento de Aplicativos do aplicativo do Windows (Compilar aplicativos da área de trabalho para Windows).
- Segurança e implantação do ClickOnce – documentação de implantação do Visual Studio.
- Entenda os recursos ClickOnce e DirectInvoke no Microsoft Edge - na documentação do Microsoft Edge Enterprise.