“Acesso negado” quando um arquivo .CMD tenta copiar um arquivo

0

Eu tenho um arquivo .CMD que eu corro clicando com o botão direito do mouse em um arquivo no Windows Explorer; o arquivo no qual eu clico é passado como o parâmetro para o arquivo .CMD. O arquivo .CMD faz algum processamento e copia um arquivo de uma pasta para outra. Funcionou bem no Windows XP; no Windows 8, quando o comando "copy" é executado, ele retorna a mensagem de erro "Acesso negado".

Se eu copiar o arquivo usando o Windows Explorer, uma caixa de diálogo será exibida com a mensagem "Você precisará fornecer permissão de administrador para copiar para esta pasta". Clico em "Continuar" e o arquivo é copiado.

Eu não sei os detalhes do UAC, mas sei que não quero alterar as permissões para permitir que o arquivo seja copiado sem intervenção. Ou seja, não quero que o arquivo .CMD inteiro seja executado como administrador. Quero clicar com o botão direito do mouse no arquivo de entrada, executar o arquivo .CMD e fazer com que a caixa de diálogo apareça quando o comando "copy" tentar executar; Em seguida, clicarei em "Continuar" para permitir que apenas o comando de cópia seja executado com privilégio de administrador. (Se houvesse outro lugar no arquivo .CMD onde um arquivo foi copiado ou qualquer outra operação que requeira privilégio de administrador, eu desejaria que o diálogo aparecesse novamente, para perguntar se está tudo bem rodar essa operação como administrador).

Isso pode ser feito?

    
por user184411 19.09.2013 / 04:40

2 respostas

2

Receio que não exista uma solução simples para o que você está tentando fazer.

  • cmd não é muito interativo, e os scripts devem ser executados sem atenção humana.
  • outra limitação está na maneira como o UAC funciona: um processo só pode ser elevado quando é iniciado; Depois que um processo é iniciado, ele tem privilégios de administrador ou não. Portanto, no seu caso, para cada comando que poderia levar ao prompt do UAC, você precisa codificar as duas formas: onde o script tem permissão para copiar sem elevação e com a elevação.

Você não pode programar a elevação com cmd , a menos que tenha uma ferramenta adicional que lide com elevação para você e continue com o comando que falhou com permissões regulares.

Se você concordasse com a maneira como funcionava no Windows XP, a solução mais simples seria executar o script com privilégios de administrador.

Se o objetivo do seu script é copiar um único arquivo e isso é tudo que o script faz, criar um utilitário que seja legal com o UAC parece ser um exagero.

Você pode criar um atalho, o arquivo .lnk, para o seu script. Em seguida, nas propriedades de atalho, na aba Atalho , clique no botão Avançado e marque Executar como administrador . Clique em OK duas vezes para salvar as alterações.

Quando você clicar em tal atalho, verá o prompt do UAC para Windows Command Processor (porque ele executa .cmd files).

    
por 20.09.2013 / 10:21
2

Você precisa abrir o prompt de comando como administrador.

  1. Abra o gerenciador de tarefas, abrindo o diálogo de execução (pressione Win + R juntos) e digitando taskmgr , ou pressionando Ctrl + Desloc + Esc .

  2. Clique em Arquivo - > Nova tarefa .

  3. Marque a caixa que diz Criar esta tarefa com privilégios administrativos . Se você não vir isso, significa que sua conta de usuário é uma conta padrão, não uma conta de administrador. Como você pode clicar no prompt do UAC, estou assumindo que você é um administrador.

  4. Digite cmd e clique em OK. Você deve ser capaz de executar seu comando de cópia a partir deste prompt de comando sem receber nenhum erro de permissão.

Alternativamente, você pode pressionar Win + X para abrir o menu Power User, e selecionar

e selecione Prompt de Comando (Admin) de lá (ou pressione A)

    
por 19.09.2013 / 04:45