Como crio um link no Windows 7 home premium como usuário regular? [duplicado]

69

Esta pergunta já tem uma resposta aqui:

Eu sou um cara Linux e, como tal, estou muito perdido quando tento fazer qualquer coisa é o Windows. Estou tentando criar o seguinte link:

mklink /d C:\backup\data \\myth\backup\data

Mas não tenho privilégios suficientes para pré-executar esta operação. Como obtenho privilégios suficientes no Windows 7?

ATUALIZAR:

Clique com o botão direito do mouse em C: \ backup \ data e altere as permissões para acesso total ao usuário autenticado, reinicie a máquina e tentei o comando novamente sem sorte. Alguém tem mais alguma sugestão?

stephenmm
fonte
Verifique se c: \ backup \ data ainda não existe ao tentar criar o link como administrador.
David d C e Freitas

Respostas:

112

Como indicado aqui ,

A criação de links simbólicos requer o SeCreateSymbolicLinkPrivilege ("Criar links simbólicos"), que é concedido apenas aos administradores por padrão (mas você pode alterar isso usando a política de segurança).

Para alterar as políticas:

  1. Clique com o botão direito em StartRune inicie secpol.msc.

  2. Abra Security Settings → Local Policies → User Rights Assignmente selecione Create symbolic links(que representa SeCreateSymbolicLinkPrivilege).

insira a descrição da imagem aqui

  1. Clique duas vezes no item e adicione você (ou todo o Usersgrupo) à lista.

As alterações serão aplicadas quando você sair e efetuar login novamente.

Hugh Allen
fonte
2
Observe que no Win7, o grupo 'Usuários' não estava visível para mim até que, na caixa de diálogo "Selecionar usuários ou grupos", cliquei no botão "Tipos de objeto" e adicionei "grupos".
Jonathan Hartley
7
Isso não funciona para mim, independentemente de eu adicionar meu usuário, "Usuários" ou "Todos". Efetuei logout e reinicializei, mas, no meu diretório pessoal, o comando "mklink / D docs Dropbox" ainda me dá "Você não tem privilégios suficientes para executar esta operação". Mesmo resultado, se eu tentar arquivos, em vez de diretórios.
Jonathan Hartley
3
Meu problema resolvido pela resposta de Brandon Donnelson: Além do acima, o usuário executando "mklink" não pode ser um administrador.
Jonathan Hartley
@Jonathan. não funcionou para mim. E parece bobagem, ou talvez eu esteja entendendo mal. O Windows 7 não permite que um administrador crie links simbólicos, mas apenas não administradores depois que um administrador lhes concede privilégios ???
21712 Ben
4
@ Ben, eu concordo que parece barmy. Pensando bem, acho que resolvi meu problema executando a janela 'cmd' clicando com o botão direito do mouse e escolhendo 'executar como administrador'. Alguém me explicou que, ao iniciar um processo, o Windows retira os privilégios de administrador, a menos que você escolha 'executar como administrador'. Nesse ponto, se você não for um administrador, precisará digitar uma senha de administrador. Se você já é administrador, não precisa inserir nada. Talvez isso tenha me permitido executar o 'mklink' de dentro da janela do cmd.
Jonathan Hartley
19

Acabei de descobrir que posso criar uma 'junção' mesmo quando não consigo criar um link simbólico:

mklink [/D] /J junctionname filename

onde / J indica 'criar uma junção', e o / D é, acredito, se o arquivo nomeado for um diretório. (meu usuário é atualmente um administrador)

No entanto, uma junção a um arquivo 'bat' não parece ser executável; portanto, isso não serve para nada.

Alguém entende por que isso é ou como pode ser corrigido para fornecer uma abordagem alternativa ao problema do OP?

Jonathan Hartley
fonte
11
Você pode criar um hardlink ( mklink /H) sem privilégios de administrador, e isso será executável. Links físicos são para arquivos, junções são para diretórios, links simbólicos são para ambos (e /Dsão usados ​​para indicar que um link simbólico é para um diretório).
Brilliand
3
Junções e hardlinks são inúteis para o exemplo no OP, no entanto, porque nenhum deles pode apontar para uma unidade de rede (hardlinks são limitados à mesma partição, junções são limitadas a unidades locais); somente um link simbólico ou atalho do Windows pode fazer isso.
Brilliand
12

Eu descobri que apenas um não administrador pode fazer isso. Adicione não administrador para criar links simbólicos e execute como não administrador. Você precisará adicionar uma pessoa com privilégios de não administrador. Então você dá permissão ao alvo para o não administrador, para que ele possa executar o runas mklink.

Brandon Donnelson
fonte
11
Isso resolveu totalmente o meu problema: meu usuário é um administrador, mas o "mklink" não funcionaria até eu ativar a conta "guest", chame "runas / user: guest cmd" e execute o mklink a partir dessa nova sessão do cmd. Também exigia a concessão temporária de permissões, para que a conta de convidado pudesse entrar e modificar meu diretório pessoal, onde eu queria o link simbólico, o que causa uma enxurrada de diálogos de erro, mas eles pareciam obstáculos.
Jonathan Hartley
Para o registro, "mklink" não funciona para meu usuário comum, que é um administrador, mas funciona quando iniciado a partir de um cmd que é "runas / user: guest cmd" (não consegui descobrir a citação necessária para executar diretamente o comando mklink como convidado do usuário) ou quando removo minha própria conta do grupo 'administradores'.
9788 Jonathan Steinley
3
Também é importante notar que é possível executar o mklink com êxito em uma conta que possua direitos de administrador. Mas isso requer que o UAC seja desativado.
Vladimir Sizikov
2

As soluções acima não funcionaram para mim porque não só não consegui criar um usuário "convidado" em minha máquina, como também não posso pedir a todos os usuários de minhas ferramentas que o façam também em suas máquinas. Também não é razoável exigir que eles usem consoles de administrador.

Minha solução é usar: elevate.cmd e elevate.vbs

  1. Faça o download em: http://technet.microsoft.com/en-us/magazine/2008.06.elevation.aspx
  2. Coloque esses dois arquivos no caminho do sistema (ou em algum lugar conveniente na rede)
  3. elevate.cmd cmd /c "cd /d LINK_DIR && mklink /D LINK_NAME LINK_TARGET_PATH"

Contras: elevate.cmd retorna imediatamente, mas responder à caixa de diálogo do UAC leva tempo. Isso me forçou a adicionar um "você já aceitou a caixa de diálogo do UAC?" pergunta para o meu script. É possível pular "elevate.cmd" verificando o código de saída para o seguinte comando: whoami /groups | find "S-1-16-12288"(código de saída 0 significa que você tem um console do Adminstrator).

Denkkar
fonte
2

Também me deparei com esse problema hoje. Eu tive uma tarefa de compilação do NAnt tentando criar links simbólicos em um computador. Estava sendo rejeitado por falta de privilégios. Encontrei este post que ajudou a resolver meu problema: http://josh.mainelan.net/tag/mklink/ .

A seção relevante:

  1. Abra sua caixa de execução, digite "secpol.msc" e clique em OK.
  2. Navegue na pasta Security Settings \ Local Policies \ User Rights Assignment.
  3. Encontre “Criar links simbólicos” e adicione o grupo Usuários.

Eu acho que você precisa reiniciar o computador ou algo assim depois de fazer isso.

Matt
fonte
1

Execute o prompt de comando como administrador para executar este comando.

Digite cmd (ou comando) no menu Iniciar e clique com o botão direito do mouse e escolha "executar como administrador".

Agora, qualquer comando que você executar será executado com privilégios de administrador.

teknikqa
fonte
Como outros já mencionaram, SeCreateSymbolicLinkPrivilege é o que é necessário. No entanto, mesmo se você for o administrador do Windows 7, a maioria dos programas não será executada com privilégios administrativos. Para obter privilégios administrativos para um programa, siga as etapas mencionadas acima.
teknikqa
Eu acho que ele sabe sobre como administrar é por isso que ele está fazendo a pergunta
barlop
-5

Eu recomendaria o Ultimate Windows Tweaker . Use-o para selecionar "Mostrar propriedade de posse" para contornar o problema de permissões e "Mostrar janela de comando aberta aqui" para abrir o prompt de comando na pasta correta.

texto alternativo

outsideblasts
fonte
Instalou, abriu o explorer e clicou com o botão direito do mouse na pasta a ser vinculada e "tomou posse" e abriu a janela de comando a partir daqui. Execute o comando mklink acima e receba o mesmo erro novamente.
stephenmm
Ah, vale a pena tentar. Como um usuário recente do Windows -> Linux, posso simpatizar totalmente com as coisas que não estão funcionando e sem saber o porquê. Boa sorte.
Outsideblasts 28/03/10
5
Ironicamente, nem assumir a propriedade nem exibir o prompt de comando oferece privilégios de administrador. Assim como no Linux.
surfasb
-1 Experimente tentar-se antes de publicá-la, então você veria que não funciona
barlop