software‎ > ‎módulos‎ > ‎engine‎ > ‎Base de Conhecimento‎ > ‎

Redirecionamento de arquivos quando criados no diretório raiz do Windows [su_e10112402]

    Existe um comportamento, a partir do Windows Vista, que se a aplicação não está sendo executada com privilégios de administrador, a escrita para arquivos em diretórios considerados "sensíveis", tais como o "C:/" ou "Arquivos de Programas" é bloqueada.

    Se o engine está executando SEM permissão de administrador e um arquivo é requisitado a ser gravado na Raiz, o usuário não achará o arquivo nesse diretório. Ele será gravado, todavia será gravado em outro local. Essa técnica é chamada de UAC Virtualization.

    Exemplo:
    Usuário tenta gravar o arquivo.
    var file = new File("C:\\teste.txt")

    Tal arquivo não ficará nesse diretório, mas sim em.
    "C:\Users\Username\AppData\Local\VirtualStore\teste.txt"
    O Windows abstrai essa mudança de diretório. Caso o usuário queira ler o arquivo, considere o mesmo diretório que foi indicado na criação. O Windows redirecionará a requisição de leitura para o diretório em que o arquivo foi gravado. Portanto a aplicação rodará sem problemas. A única coisa que pode incomodar é que o usuário não verá o arquivo na Raiz.

    Caso você queira forçar que o arquivo seja gravado nos diretórios que a Microsoft considera sensíveis, terá que dar permissão ao engine de que rode como administrador. Você pode fazer isso clicando com o botão direito do mouse e selecionando a opção "executar como administrador".

    Leia mais sobre UAC Virtualization em:
    http://windowsteamblog.com/windows/b/developers/archive/2009/08/04/user-account-control-data-redirection.aspx