Pergunta

Eu tenho um programa VB6 legado que instala um arquivo do Access em um sub-diretório da pasta de dados comum (CSIDL_COMMON_APPDATA). Eu já instalado este programa em um sistema de 64-bit Vista, eo programa funciona bem e acessa o arquivo em C: \ ProgramData. \ Wow \ WowCat.mdb, mas este arquivo não mostrar no Windows Explorer

Eu quero substituir esta base de dados, com uma versão mais recente, tirada do meu velho PC, mas usando o Explorer I não pode ver o arquivo em C: \ ProgramData \ Wow \ (estou mostrando todos os arquivos ocultos e de sistema). Se eu ir em frente e copie o novo WowCat.mdb de qualquer maneira, o programa ainda trabalha com o antigo.

Stepping o código em VB, é definitivamente abrir o arquivo em: C: \ ProgramData \ Wow \ WowCat.mdb. Pesquisando na C:? Unidade só mostra a nova cópia, então onde é o que o programa está acessando

Foi útil?

Solução

Este é por causa de redirecionamento de pastas no Windows Vista. Se você normalmente não tem os direitos para escrever algo no C: \ Program Files-pasta, Vista silenciosamente redirecionar essas gravações em uma pasta "secreto" dentro do seu diretório de usuário. O arquivo ainda será visível para o usuário que criou o arquivo (e quaisquer programas em execução como o usuário), mas não será visível para qualquer outra pessoa. Portanto, o seu programa é provavelmente funcionando como um usuário diferente do Explorer é, e assim Explorer não pode vê-lo.

Veja a seguinte saída de dir / AL na minha máquina Vista de 64 bits:

C:\ProgramData>dir /aL
 Volume in drive C has no label.
 Volume Serial Number is 74DB-58F8

 Directory of C:\ProgramData

02.11.2006  16:41    <JUNCTION>     Application Data [C:\ProgramData]
02.11.2006  16:41    <JUNCTION>     Desktop [C:\Users\Public\Desktop]
02.11.2006  16:41    <JUNCTION>     Documents [C:\Users\Public\Documents]
02.11.2006  16:41    <JUNCTION>     Favorites [C:\Users\Public\Favorites]
02.11.2006  16:41    <JUNCTION>     Start Menu [C:\ProgramData\Microsoft\Windows\Start Menu]
02.11.2006  16:41    <JUNCTION>     Templates [C:\ProgramData\Microsoft\Windows\Templates]
               0 File(s)              0 bytes
               6 Dir(s)  62 040 051 712 bytes free

O recurso é conhecido como pontos ou junções de nova análise, dependendo de onde você ler sobre eles. Eles são muito semelhantes aos links simbólicos em Unix.

Outras dicas

Fazendo isso corretamente exige um instalador MSI ou legado instalador funcionando elevou a cria uma subpasta CommonAppDataFolder do Windows, permite o controlo total para todos (ou um grupo apropriado) para esta pasta e, finalmente, coloca o seu MDB lá. Você também pode criar a pasta, mova o arquivo MDB lá, e definir permissões sobre apenas o arquivo.

Também é possível para o próprio EXE para fazer isso na primeira execução se for executado elevados ou detecta a um processo elevado para fazer o trabalho omissão e desova. Normas ditam que esta ação deve ser iniciada através de um item de menu ou botão com o ícone UAC Escudo exibida no entanto, e não apenas aparecendo uma UAC alerta.

É tudo muito mais fácil através de um pacote MSI embora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top