Como posso superar o "Link simbólico não pode ser seguido porque seu tipo está desativado". Erro ao obter o alvo de um link simbólico?
-
04-07-2019 - |
Pergunta
Seguindo de um pergunta anterior, Estou criando um link simbólico em um servidor 2008 a partir de uma máquina Vista usando caminhos UNC. Eu posso criar o link muito bem. Eu posso ir para a caixa Server 2008 e clicar duas vezes no link no Explorer para abrir o arquivo de destino. O que não posso fazer é usar o FileCreatew para obter uma alça no link do caminho UNC (da caixa Vista). Quando eu tento, ele falha e getLasterRor () retorna o código de erro 1463 (0x5b7), que é:
O link simbólico não pode ser seguido porque seu tipo está desativado.
Como ativar seu "tipo" no servidor 2008 (assumindo que o erro significa o que diz)?
Solução
Para adicionar @David Arno Resposta útil, com base no W7:
fsutil.exe
pode ser feito para mostrar quais argumentos são necessários simplesmente executando:
fsutil behavior set /?
Para Relate o atual configuração, corre fsutil behavior query SymlinkEvaluation
- Vejo @Jake1164 Resposta, particularmente em relação a como um política de grupo pode estar controlando o comportamento.
o O comportamento de resolução de link simbólico está definido na máquina que acessos um determinado link, não a máquina que a hospeda.
o códigos de comportamento por fsutil behavior set SymlinkEvaluation
- ou seja L2L
, L2R
, R2L
, e R2R
- significa o seguinte:
L
significa "local" eR
Para "remoto" (quem teria Thunk?)- O primeiro
L
ouR
- antes da a2
- refere -se à localização do próprio link (em oposição ao seu alvo) em relação à máquina acessando o link. - O segundo
L
ouR
- depois a2
- refere -se à localização do link alvo em relação à máquina onde o próprio link está localizado.
Assim, por exemplo, executando fsutil behavior set SymlinkEvaluation R2L
significa que você pode acessar links:
- localizado em uma máquina remota (
R
) - esse ponto para alvos na mesma máquina remota (
L
)
Ao contrário do que David experimentou no Vista, eu, no W7, consegui resolver um link remoto que apontou para um recurso em outra máquina remota, permitindo o R2R sozinho (e também não precisar ativar o R2L).
Outras dicas
Bem, eu encontrei a resposta, embora para descrevê -la como mal documentada é um eufemismo!
Em primeiro lugar, Este artigo tecnológico destaca o fato de que os usuários podem "ativar ou desativar qualquer uma das quatro avaliações disponíveis em links simbólicos". Essas quatro "avaliações" incluem remoto para o local e o local para remoto. Não dá nenhuma idéia de como fazer isso.
No entanto, uma pesquisa adicional revelou Esta página de ajuda fsutil, que realmente documenta como "ativar ou desativar qualquer uma das quatro avaliações disponíveis em links simbólicos". Então, para corrigir o problema que estava tendo, preciso emitir o seguinte comando Na caixa Vista:
fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
Para permitir o acesso total a onde os links simbólicos estão apontando para máquinas locais e remotas.
Recentemente, encontrei isso em todas as minhas caixas corporativas do Windows 7 quando um dos meus programas legados parou de funcionar. Depois de pesquisar e encontrar essas configurações, tentei definir através da linha de comando e através do registro sem nenhum alívio.
Descobri que você pode usar o comando de um prompt elevado:
fsutil behavior query SymlinkEvaluation
Isso retornará o status desses links e, no meu caso, eles estão sendo controlados por uma política de grupo! Obrigado departamento de TI (você f@$#%$ RS)!
Essas configurações também podem ser manipuladas diretamente através do registro em HKEY_LOCAL_MACHINE SYSTEM CurrentControlset Control FileSystem: Ver SymlinkLocalTolocalevaluation, SymlinkLocalTeroteevaluation, SymlinkRemoteTolocalevaluation, SymlinkRemotetoremoteevaluation.
Se com "FSUTIL COMPOLENTE SYMINKEVALUTION", você recebe mensagem .. "atualmente é controlado pela política de grupo"..., Verifica Hkey_local_machine software políticas microsoft windows filesystems ntfsOu simplesmente pesquise no Registro por "Symlink"
Obrigado David pela dica, eu estava ficando desesperada para corrigir esse problema que tornava os symblinks principalmente inúteis.
Deve -se observar que a configuração padrão para Vista é L2L e L2R ativada, mas R2R e R2L desativados.
Eu tentei primeiro ativar apenas o R2R, mas isso não é suficiente. O R2L também deve ser ativado.
A próxima pergunta na minha lista: como se livrar dessa troca estúpida /D para o comando mklink para links de diretório. O tipo de link padrão deve ser inferido automaticamente do tipo de nome de destino!
These settings can also be manipulated directly via the registry (requires local admin to write):
Registry key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
Registry values (name/data pairs):
Name Type Data (1: Enabled; 0: Disabled)
-------------------------------------------------
SymlinkLocalToLocalEvaluation REG_DWORD 1
SymlinkLocalToRemoteEvaluation REG_DWORD 1
SymlinkRemoteToLocalEvaluation REG_DWORD 1
SymlinkRemoteToRemoteEvaluation REG_DWORD 1
Official documentation is difficult to find, but this appears to be an official Microsoft page: Selectively allow the evaluation of a symbolic link
FYI if you have Group Policies in place controlling SymlinkEvaluation settings you CAN still set them yourself from the command line. They will be overwritten by GP at next reboot/login but your settings will work during your user session.
So as a workaround if you need to set it to something other than what GP dictates you could even run a script at logon to set them after GP is applied.
Remote junction points work by default. For files you still need symlinks.