Sim, o que você está pedindo é possível. Você pode escrever um driver de filtro do sistema de arquivos para isto. Uma das coisas que os drivers de filtro do sistema de arquivos são capazes é interceptar cada leitura e gravação em um sistema de arquivos, examinar a operação para determinados nomes de caminho e redirecionar a operação para um nome de caminho diferente. Isso é o que o Windows Vista e acima usam para redirecionar arquivos e pastas para a "virtualização de arquivos UAC" - aquela coisa em que os aplicativos que tentam gravar em pastas protegidas do sistema são redirecionados automaticamente para AppData e semelhantes. Se você emitir um comando fltmc
para visualizar os drivers de filtro instalados atualmente em seu sistema, provavelmente verá luafv
listado. (O UAC era originalmente chamado de LUA) e o FV significa Virtualização de Arquivos.
No entanto, não é uma tarefa trivial, a menos que a programação do kernel e a gravação do driver sejam naturais para você.
Na verdade, agora que penso nisso ... a virtualização de arquivos UAC já deve estar lidando com isso para você. Isso é exatamente o que foi projetado para fazer - criar aplicativos que estavam tentando gravar em Arquivos de Programas ou HKLM, em vez disso, gravar em User AppData ou HKCU. É necessária uma inspeção mais profunda do seu aplicativo e sistema para determinar por que está evitando a virtualização do UAC.
Outra solução que você provavelmente achará muito mais fácil seria criar um correção de compatibilidade de aplicativos . Acho que essa abordagem é altamente preferível ao driver de filtro do sistema de arquivos.
Um shim AppCompat é capaz de redirecionamento personalizado de arquivos e pastas. Eu diria que este é muito mais preferível, porque é muito mais fácil, e só atinge a sua aplicação incontrolável, em vez de ter que fazer uma ampla modificação do sistema através da instalação de um driver.