O conteúdo do arquivo é diferente dependendo da execução do IDE “como administrador” ou não?

2

No Windows 7, usando o Windows Explorer, salvei uma cópia de backup do arquivo C: \ Arquivos de Programas \ Microsoft Visual Studio \ VC98 \ ATL \ Incluir \ ATLCOM.H renomeando-a para fora do caminho e copiei um novo arquivo ligeiramente diferente no lugar (como ATLCOM.H nesse mesmo diretório).

Em seguida, abri o Microsoft Visual C ++ 6.0 IDE e compilei meu projeto (que depende do ATLCOM.H). Notei que o executável compilado se comportava como se eu não tivesse feito minhas alterações.

Então (para checar se eu realmente fiz as mudanças ou não) eu abri o arquivo de dentro do IDE. Minhas mudanças não estavam presentes. Mas se eu abri o arquivo em algum outro editor, as mudanças ESTÃO presentes. Apesar de tudo, eu tentei abrir o arquivo com quatro programas separados; exceto para o VC ++ 6.0, minhas alterações estão presentes quando o arquivo é aberto em todas elas. Além disso, se eu fizer outra alteração no arquivo de dentro do VC ++ 6.0, e salvá-lo, o conteúdo do arquivo aparentemente não será afetado quando visto de dentro dos outros programas, mas se eu fechar VC ++ 6.0 e reabri-lo, a alteração que fiz dentro do VC ++ 6.0 ainda está lá. Então está sendo gravado no disco em algum lugar.

Em seguida, descobri que, se eu inicio o VC ++ 6.0 através de "Executar como administrador", o conteúdo do arquivo olhar (de dentro do VC ++ 6.0) o mesmo que eles olham de dentro dos outros programas. Se eu inicio sem "como administrador", eles são diferentes.

Eu estou supondo que talvez haja algo acontecendo como o Windows (ou o próprio IDE) fundindo dois diretórios "reais" separados em um diretório virtual? Da mesma forma que o Windows pode mesclar "C: \ Users \ Public \ Documents" e "C: \ Users \ Bob \ Documents" no que parece ser um único diretório do ponto de vista do usuário? E como exatamente essa mesclagem depende se estou executando o IDE como administrador ou não?

Alguém sabe o que está acontecendo aqui? Existem alguns diretórios que eu posso acessar através do Windows Explorer (ou um prompt de shell ou qualquer outro) que me permitirá realmente ver os dois arquivos reais, em vez de apenas o C: \ Arquivos de Programas \ Microsoft Visual Studio \ VC98 \ aparentemente mesclados ATL \ Include? Agradecemos antecipadamente.

    
por Bob Vesterman 16.09.2014 / 23:05

1 resposta

4

Seu problema é que você está usando o Visual C ++ 6.0. Essa versão do MSVC é antiga. Você está provavelmente se deparando com um problema com o recurso de Loja Virtual presente no Windows Vista em diante.

Veja o que está acontecendo:

O programa provavelmente está tentando salvar dados em sua própria pasta em Arquivos de Programas, em vez da pasta do seu perfil de usuário. No Windows 7, as gravações na pasta Arquivos de programas são redirecionadas de forma silenciosa e transparente para a pasta Armazenamento virtual no diretório de perfil do usuário. Quando você seleciona Executar como Administrador, as gravações nos Arquivos de Programas são bem-sucedidas e esse redirecionamento não acontece.

Verifique o seguinte:

Procure em C: \ Users \\ AppData \ Local \ VirtualStore. Você vê um WINDOWS e uma pasta de arquivos de programas sob lá? Em caso afirmativo, existem arquivos relacionados ao VC6.0? Se sim, então é isso que está acontecendo com você.

Sua única solução seria sempre executar como administrador ou nunca ser executado como administrador, para que o comportamento seja sempre consistente. Você também pode desabilitar o recurso VirtualStore do editor de Diretiva de Grupo local (ele não fica mais desabilitado quando você desativa o UAC da maneira como ele fazia no Windows Vista).

Como alternativa, você pode atualizar para uma versão mais recente do Visual C ++ (que eu recomendo, porque, como eu disse, 6.0 é antigo).

    
por 16.09.2014 / 23:26