Usuário com melhor resposta
Acesso negado à pasta da aplicação

Pergunta
-
Bom dia... já vi muitas perguntas 'parecidas' aqui no fórum, mas acho que no meu caso o problema é um pouco diferente da maioria.
Fiz uma aplicação Windows Form em .vb, onde, todas as exception são gravadas num log.
Quando compilo o projeto e rodo ele a partir do VS, tudo funciona perfeitamente. Já fiz o teste, inclusive coloquei a pasta do projeto no mesmo diretório onde fica o aplicativo depois de instalado.
Eu crio o instalador no Inno e instalo normalmente na pasta C:\ProgramFiles\xxx. Porém, ao rodar o programa, quando tem que escrever ou ler algum arquivo dá erro de acesso negado. Se eu executo a aplicação como 'administrador', não ocorre nenhum erro. Já tentei, no próprio código usar as classes de permissão, mas a partir do momento que não executo o programa como 'administrador' os métodos que a aplicação chama também não conseguem dar as permissões necessárias. Ou dá exception, ou não produz o efeito esperado. Alguém já passou por algo parecido ou faz ideia do que está errado?
Respostas
-
Veja no "app.manifest" (pasta "My Project") - acessável clicando em "My Project" no projeto, indo em "Application" > "View Windows Settings".
É basicamente um XML, que deve contrar a chave:
<?xml version="1.0" encoding="utf-8"?> <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"><requestedExecutionLevel level="requireAdministrator" uiAccess="false" /></requestedPrivileges> </security> </trustInfo> </asmv1:assembly>
Note em "requestExecutionLevel" que está como "requireAdministrator".
Assim toda vez que o programa é executado, ele pede acesso de administrador.
- Sugerido como Resposta Herbert Lausmann domingo, 20 de abril de 2014 15:26
- Marcado como Resposta Aristides Darlan Peiter Tondolo quinta-feira, 24 de abril de 2014 16:46
-
OK, o que o Inno fez com isso foi adicionar as permissões de pasta o usuário logado (com acesso de modificação), entendo o que você fez, mas se o computador tiver mais de um usuário, os outros vão passar pelo mesmo problema.
A solução que te passei, compila no projeto do programa, e com isso, independe do usuário logado; ela diz para o sistema que o programa PRECISA de permissões de administrador, e pede essa permissão ao usuário quando o programa é aberto.
Mas fica a critério.
- Marcado como Resposta Aristides Darlan Peiter Tondolo quinta-feira, 24 de abril de 2014 14:29
Todas as Respostas
-
Veja no "app.manifest" (pasta "My Project") - acessável clicando em "My Project" no projeto, indo em "Application" > "View Windows Settings".
É basicamente um XML, que deve contrar a chave:
<?xml version="1.0" encoding="utf-8"?> <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"><requestedExecutionLevel level="requireAdministrator" uiAccess="false" /></requestedPrivileges> </security> </trustInfo> </asmv1:assembly>
Note em "requestExecutionLevel" que está como "requireAdministrator".
Assim toda vez que o programa é executado, ele pede acesso de administrador.
- Sugerido como Resposta Herbert Lausmann domingo, 20 de abril de 2014 15:26
- Marcado como Resposta Aristides Darlan Peiter Tondolo quinta-feira, 24 de abril de 2014 16:46
-
-
Olá adpeiter,
A solução proposta pelo Sammuel resolveu seu problema? Se sim, não esqueça de marcar como resposta para fechar a thread e colaborar com a organização do fórum.
Caso não tenha resolvido, por favor explique melhor sua situação para podermos ajuda-lo.
Att.
Herbert Lausmann
- Editado Herbert Lausmann segunda-feira, 21 de abril de 2014 15:41
-
OK, o que o Inno fez com isso foi adicionar as permissões de pasta o usuário logado (com acesso de modificação), entendo o que você fez, mas se o computador tiver mais de um usuário, os outros vão passar pelo mesmo problema.
A solução que te passei, compila no projeto do programa, e com isso, independe do usuário logado; ela diz para o sistema que o programa PRECISA de permissões de administrador, e pede essa permissão ao usuário quando o programa é aberto.
Mas fica a critério.
- Marcado como Resposta Aristides Darlan Peiter Tondolo quinta-feira, 24 de abril de 2014 14:29
-
-