A grande coisa que mudou entre o Windows XP e o Windows Vista/7 é a introdução do UAC, o que significa que os usuários, mesmo se criados como administradores, não têm acesso de leitura/gravação a locais "importantes" como o
%programfiles%
(Geralmente C:\Program Files
ou C:\Program Files (x86)
) diretório. É por isso que seu aplicativo funciona no Windows XP e não no Windows Vista. Você precisa armazenar seus DADOS no
%programdata%
diretório (que geralmente é C:\ProgramData
) se os dados forem compartilhados entre usuários na máquina ou %appdata%
(que geralmente é C:\Users\USERNAME_GOES_HERE\AppData\Roaming
) se for específico para um determinado usuário. Agora você não encontrará mais o problema de não conseguir gravar no arquivo. A razão para isso é que ao armazenar dados no diretório de instalação de seus programas você estava fazendo a coisa errada . O Windows não impediu você de fazer isso anteriormente, mas foi amplamente documentado que
%programfiles%
não era o local apropriado para armazenar dados.