Solução para reescrever o caminho em um software antigo para evitar a permissão de gravação dentro de% programfiles%

1

Estou procurando uma solução para reescrever o caminho específico de um antigo software dentro de sua própria pasta, em% programfiles%.

O software antigo que salva seus dados em sua própria pasta requer permissão de edição (reduzindo a segurança) ou dando privilégios administrativos ao usuário final (o usuário final quebrará o sistema).

Existe uma solução para ligar e reescrever o caminho específico que um software pode querer ler / gravar, de "% programfiles% \ $ SoftwareName \ $ SaveFolder" para "% userprofile% \ Documents \ $ SoftwareName \ $ SaveFolder" que não requer privilégios administrativos para o usuário final?

Observe que% userprofile% deve sempre vincular ao perfil do usuário atual e não a uma pasta de usuário específica.

    
por Zulgrib 24.09.2014 / 15:43

1 resposta

2

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.

    
por 24.09.2014 / 16:03

Tags