none
Acesso negado à pasta da aplicação RRS feed

  • 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?

    domingo, 20 de abril de 2014 11:56

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.

    domingo, 20 de abril de 2014 15:18
  • 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.

    terça-feira, 22 de abril de 2014 11:28

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.

    domingo, 20 de abril de 2014 15:18
  • no meu caso, o valor do nó estava como 'asInvoke'...
    por fim, descobri que as permissões precisavam ser explicitadas no Inno mesmo:

    [Dirs]
    Name: "{app}"; Permissions: users-modify;

    domingo, 20 de abril de 2014 22:45
  • 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


    segunda-feira, 21 de abril de 2014 15:40
  • 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.

    terça-feira, 22 de abril de 2014 11:28
  • ok... mas neste caso ocorreu um outro erro quando o programa solicita a elevação... mas enfim, obrigado pelas explicações...
    quinta-feira, 24 de abril de 2014 14:29
  • adpeiter, estou tendo o mesmo problema.

    Está executando somente com ADM, li o que resolveu para você. Mas não estou conseguindo aplicar aqui. Pode me ajudar por gentileza? Obrigado.

    segunda-feira, 6 de julho de 2015 17:27