Modificar arquivo no diretório %localappdata% e UAC [RESOLVIDO]

Olá pessoal, tudo bem com vocês?

Parabéns pelo fórum, artigos e tudo mais dessa página. Já me ajudou muito e tenho certeza que a muitas outras pessoas também!

Criei este tópico pois encontrei um problema e não encontrei uma solução e gostaria de pedir a ajuda de alguém que entenda melhor do problema.

Histórico do programa que estou desenvolvendo:
Estou criando um programa que modifica alguns arquivos de um jogo (rFactor, jogo de corrida), e o objetivo do programa é preparar o jogo para ser lançado com os parâmetros específicos com os quais eu quero que ele seja lançado (poder escolher a pista, mod, perfil a ser carregado pelo jogo quando for aberto entre outras coisas). Até aqui, tudo estava correndo bem. Para jogar, eu uso uma direção da Logitech que permite que eu possa alterar os graus de rotação do volante (que também pode ser alterado no meu programa).

O problema:
Esta semana, instalei o Windows 7 na minha máquina (estava usando o XP, com o User Account Control desligado) e continuei a desenvolver meu programa. Só que o programa da Logitech, que permite alterar os graus de rotação do volante, guarda esta informação dentro de um arquivo XML dentro da pasta “Usuário\AppData\Local\Logitech\Gaming Software” (ou seja, dentro da pasta da variável %LOCALAPPDATA%). Enquanto eu estava no Windows XP com o UAC desativado, tudo funcionava perfeito, mas agora no Windows 7 e o UAC ativado, eu recebo a mensagem “Acesso Negado” toda vez que meu programa tenta acessar este arquivo para que eu possa modificá-lo.

Solução:
Andei pesquisando no Google e vi que para o meu programa poder acessar esta pasta, há duas maneiras de fazer esta alteração:

  • Fazer o meu programa rodar com elevação de privilégios (rodar como administrador);
  • Criar um programa em separado, e incluir nele somente o código que precisa de elevação, e executar o programa separado com elevação.

Lendo pelos fóruns, vi que a segunda opção é a melhor, visto que não há necessidade do programa inteiro rodar como Administrador, somente quando preciso alterar o arquivo XML do Logitech Progiler na pasta %LOCALAPPDATA%.

Tentei procurar a opção de “Executar como Administrador” nas propriedades do arquivo .jar gerado pelo Eclipse, mas não existe tal opção.

Li sobre a necessidade de se criar um arquivo de manifesto para que o programa possa pedir para ser executado com elevação de privilégios. Mas para fazer isto, meu programa precisa estar contido em um arquivo .exe e dentro do executável, inserir o manifesto. Eu não entendi claramente como fazer isto. Baixei e criei um executável com o launch4j, mas ainda assim não consegui fazer meu programa rodar e pedir privilégios de Admin.

Alguém tem alguma idéia de como eu consigo fazer a alteração deste arquivo contido no diretório %LOCALAPPDATA% protegido pelo Windows?

Desde já, agradeço a quem ler este tópico.

Eduardo

Pessoal,

Fazendo uns testes aqui, descobri que o problema na verdade é que o arquivo XML no qual eu precisava alterar o parâmetro de Graus do volante é oculto por padrão. Em um dos vários testes que eu fiz, acabei tirando a flag de arquivo oculdo e o meu programa conseguiu alterar o arquivo!

Fica aí a dica para se alguém mais tiver este problema.

Eduardo