Symlink diferente para usuários diferentes no Windows

1

Eu tenho um aplicativo que salva seus dados em C:\ProgramData . Isso significa que para todos os usuários, usa os mesmos dados. Eu quero conseguir um caminho, para que diferentes usuários possam ter seu próprio espaço de dados separado. Eu usei o symlink (junção de pasta) para criá-lo para %userprofile%\Documents\AppFolder , e o método funciona bem no meu perfil de usuário, mas quando tentei com um usuário diferente, o aplicativo não é executado; ao tentar acessar C:\User\User1\Documents\AppFolder , que o User2 não tem acesso. Qualquer solução possível, para que os diferentes usuários possam vincular a diferentes links simbólicos?

    
por Qoushik Hassan Tonu 20.09.2017 / 17:52

1 resposta

0

Você pode usar o comando subst para mapear uma letra de unidade para seu diretório de usuários. As letras de unidade criadas por subst são por usuário, para que você possa criar o mesmo mapeamento de cada usuário e criar um link simbólico para essa letra de unidade. Ou apenas aponte o programa para a unidade mapeada por meio de suas configurações.

Um exemplo:

subst %userprofile% v:
mklink /d c:\ProgramData\AppFolder v:\Documents\AppForder

Uma desvantagem dessa solução é que as letras de unidade mapeadas não são persistentes, portanto, é necessário recriá-las toda vez que um usuário efetua login (por exemplo, colocando um atalho no comando subst em %appdata%\Microsoft\Windows\Start Menu\Programs\Startup . pode fazer um arquivo de lote que executará subst e, em seguida, seu programa.

Uma solução alternativa é executar seu programa em um sandbox (por exemplo, Sandboxie ). Isso não funcionará se o programa tentar faça algo de baixo nível (por exemplo, instalando drivers ou serviços). Além disso, você terá que restaurar os arquivos criados pelo programa a partir do sandbox após cada execução e precisar usá-los em outro lugar.

    
por 28.09.2017 / 02:27