Como mudar a localização da pasta de armazenamento do Outlook Express: o dilema do Store Root e do CLSID usando scripts

ATUALIZADO: no final do artigo, coloquei mais dicas nos comentários... se não aparecer normalmente, clique em Comentários e veja o restante.

 

Hi,


hoje, me deparei com uma dúvida que eu tinha há muito tempo atrás, aos meus 15 ou 16 anos, quando comecei a fazer scripts pra Windows. Descobri, naquela época, que era possível alterar o local do Store Root do Outlook Express (ou Pasta de Armazenamento, na versão em português).

Essa pasta, que é o lugar onde o Outlook Express salva seus emails, tem uma peculiaridade interessante: ela não pode ser alterada para um local na rede... o que impede que você armazene seus emails em uma pasta mapeada na rede. Isso é metade da história verdadeira. Naquela época ainda, consegui descobrir que essa limitação só existia na interface gráfica; qualquer usuário com um pouco mais de experiência poderia mudar isso diretamente no registro e burlar a limitação sem problema algum. Cheguei a testar, com sucesso, no último lugar que trabalhei.

Entusiasmado com a descoberta, quis fazer um script pra automatizar isso. O problema que eu encontrei foi como localizar a chave no registro... uma vez que ela era gerada automaticamente pelo Outlook Express, e mudava de máquina pra máquina.

A chave onde fica o valor alterado é essa:

Chave: HKEY_CURRENT_USER\Identities\{CEF31BE5-846A-41AB-BCEB-02112D0D6A21}\Software\Microsoft\Outlook Express\5.0
Valor: Store Root (tipo String)


O problema estava aí... essa string entre chaves gigante é o CLSID, string que o OE gera para cada uma das identidades configuradas.

Na maioria das vezes, os usuários só usam uma, e aí o problema fica fácil de resolver. Tudo que eu precisei foi de alguém pra me lembrar desse problema (obrigado Luciano!) e de 10 minutos com o Vim e o Regedit abertos. Encontrei uma chave, HKCU\Identities e dois valores, Default User ID e Last User ID, que continham os IDs das identidades usadas recentemente. Aí, construir o script virou uma brincadeira. Vejam como ficou o produto final:

' Change-OE-Store.vbs
' bv Vinicius Canto
' MVP Visual Developer - Scripting
' Ciencias da Computação - USP São Carlos / Computer Science - University of São Paulo USP
' 19/10/2006


' Descomente a linha abaixo e comente a outra para tornar o script automático
' strPath = "z:\Mail"
strPath = inputbox("Digite o novo caminho do Store Root " & vbcrlf & "(note que precisa terminar com uma barra \)")

set objShell = CreateObject("Wscript.Shell")
strCLSID = objShell.RegRead("HKCU\Identities\Default User ID")
objShell.RegWrite "HKCU\Identities\" & strCLSID & "\Software\Microsoft\Outlook Express\5.0\Store Root",strPath,"REG_SZ"


Basta salvar com extensão .VBS e executar. Se preferir torná-lo um pouco mais automático, a ponto de poder ser colocado em um script de logon, basta comentar uma das linhas e descomentar a outra, como está escrito no próprio corpo do script.

Meus próximos passos: publicar no fórum, em resposta ao Luciano, mandar pro ScriptCenter e mandar uma sugestão pra Microsoft, uma vez que o artigo do KB 240659 está meio errado.


Bom, espero ter ajudado,



Vinicius

PS: O link pra dúvida original que motivou a criação do script está aqui.

Categorias dessa postagem:

Comentários

Anônimo : Obrigado por me ajudar a compartilhar a pasta do outlook express. mas agora surge uma nova pergunta, tem como compartilhar os contatos do outlook express de forma que ao fazer qualquer alteração em um micro, todos se beneficiarão com tal?
rogeriofer@gmail.com [13/11/06 10:43 - link]

Unknown : Pucha, obrigado pela dica com o Outlook! Agora tenho surgiu outra! Como faço para incluir no caminho o usuário logado, ou seja, quero que ele quando for setar a pasta de armazenamento já coloque o nome do usuário que está logado.
Tentei alterar para
strPath = o:\%UserName% mas não funcionou.
Tem alguma dica?
Obrigado

Maurício - dhunck@gmail.com [18/12/06 12:37 - link]

Anônimo : Valeu pela dica, vinha procurando algo deste tipo a algum tempo, me foi muito util, porém a duvida de cima também é se puder ajudar agreceria.
wnewbers@gmail.com [20/4/07 10:10 - link]

Vinicius Canto : Desculpem pela demora.

Para obter o nome do usuário logado, façam troquem o

strPath = inputbox("Digite o novo caminho do Store Root " & vbcrlf & "(note que precisa terminar com uma barra \)")

por

set objNet = CreateObject("Wscript.Network")
strPath = "o:\" & objNet.Username

Note que, nesse caso, usei como exemplo o caso do Maurício... que queria colocar no drive O:.

Além disso, prestem atenção nas strings em VBScript. É um detalhe básico de scripting...

Obrigado pela visita,


Vinicius [20/4/07 18:30 - link]

Anônimo : Estou tentando colocar espaço e nao esta dando certo, por exemplo, \\192.168.1.12\Documentos\teste\My Documents\Outlook Express

O que fazer? [8/6/07 08:36 - link]

Vinicius Canto : Tente colocar aspas nesse caminho que vc tá usando.

Note que, para colocar aspas em uma variável no VBScript, você precisa duplicar ela. Veja:

variavel = """c:\arquivos de programas"""
' variável agora tem o valor "c:\arquivos de programas"

[]s,

Vinicius Canto [8/6/07 11:10 - link]

Anônimo : olá

Para o Microsoft Outlook 2003 e 2007 funciona da mesma forma?

Eu uso AD, portanto tenho que identificar os usuparios pelo SID e não pelo registro citado por você no exemplo.

Como eufaço pra identificar a chave que tenho que alterar?

Obrigado [13/5/09 14:38 - link]

Unknown : Olá Vinicius, sou completamente leigo em programação, preciso desta solução para uma empresa que vai ficar com um HD externo em um equipamento e todas as outras máquinas necessitam ter seus outlooks armazenados neste HD. Teria alguma forma mais fácil de fazer essa alteração ? tipo um .EXE ou um .REG para inserir as informações no registro automaticamente?

Agradeço desde já, obrigado!

Rogério [6/10/09 11:35 - link]

Unknown : OBS.: este HD Externo será a unidade mapeada nos outros equipamentos. [6/10/09 11:37 - link]

Alex : En el Internet hay un programa para resolvindo complicados cuestiones. Lo utiliza tiene muchas oportunidades por conducto de unos el instrumento puede ayudar en este problema igualmente - como recuperar archivos dbx. [15/11/10 19:26 - link]

Anônimo : Obrigaduuuuuuuuu!
Você me ajudou muito mesmo, estava com este problema a muito tempo, que você seja iluminado.

Grato, mesmo

Brito [23/11/10 21:16 - link]