Questão Como posso sempre executar o prompt de comando como administrador?


Como desenvolvedor, muitas vezes tenho a necessidade de abrir um prompt de comando para várias finalidades. Por exemplo, eu uso iisreset para reiniciar meu servidor web local.

Eu normalmente abro a janela de comando de duas maneiras:

  1. pressione Ganhar, digite "cmd" e pressione Entrar
  2. Enquanto no Explorer, segure Mudança e clique com o botão direito em uma pasta e escolha "Abrir janela de comando aqui"

No entanto, quando eu abro a janela de comando de uma destas maneiras, não tenho privilégios de administrador completos aos quais sinto que tenho direito.

I am an administrator, but cmd.exe doesn't know that

Para executar aplicativos somente de administrador, tenho que abrir a linha de comando desta maneira relativamente trabalhosa:

  1. pressione Ganhar, digite "cmd"
  2. Aguarde o menu preencher
  3. Levantar a mão do teclado e colocá-lo no mouse
  4. Clique com o botão direito no item de menu "cmd.exe"
  5. Escolha "Executar como administrador"

Isso é inaceitável por vários motivos:

  • A janela sempre abre em C: \ windows \ system32, em vez da minha Users diretório (como na técnica aprovada 1) ou na pasta em que quero estar (como na técnica aprovada 2). Por isso, muitas vezes tenho que mudar de diretório para chegar onde quero ir.
  • Esse processo é vários milissegundos mais lento do que qualquer um dos meus métodos preferidos. Realizado várias vezes ao dia, todos os dias, até o final da minha carreira, soma-se cerca de dez dias de tempo perdido gasto clicando e aguardando e mudando de diretório.
  • Como programador, realizar uma tarefa robótica sem sentido me causa uma grande dor emocional.
  • Como programador, levantar a mão é uma tarefa árdua que me causa grande dor física.

É por isso que estou procurando uma solução completa que permita que as técnicas aprovadas 1 e 2 abram os comandos do administrador.

Muitos programas permitem que você altere permanentemente o nível de privilégio padrão no menu Propriedades. Prompt de comando não é um desses programas.

enter image description here

Como eu faço a janela de comando executar como administrador por padrão (mesmo quando usando a opção de menu de contexto "Abrir janela de comando aqui")?


95


origem


Por que não apenas mudar o UAC para elevar apenas? - surfasb
Não vejo uma opção "elevate only" no meu controle deslizante do UAC. Você está se referindo a algo além da janela Configurações do Controle de Conta de Usuário? - Kevin
Eu acho que é hora do martelo ... - ThunderToes


Respostas:


Para responder a primeira parte da sua pergunta, quando você apertar a tecla Windows e digitar "CMD", você pode clicar Ctrl + Mudança + Entrar para abrir como administrador.

Para responder à segunda parte da sua pergunta, cole o seguinte no bloco de notas e salve-o com uma extensão ".reg":

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Open Command Window Here as Administrator"

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /s /k pushd \"%V\""

Em seguida, execute o arquivo. Ele irá mesclar as alterações no registro e adicionar a opção aos seus menus de contexto. (Nenhuma tecla shift é necessária)


84



Nota; você ainda terá que aceitar o prompt do UAC nos dois casos. - Synetech
A edição do registro não funciona no windows 8. - Biker John
Patch de registro funciona para o Server 2012 R2 - fiat
Não funcionou para mim no Windows 7 - Hello Universe
Se você não vir o comando depois de executar o arquivo reg, efetue logout do Windows e efetue login novamente. - trebormf


Muitos programas permitem que você altere permanentemente o nível de privilégio padrão no menu Propriedades. Prompt de comando não é um desses programas.

o Compatibilidade guia está completamente desativado para todos de executáveis ​​do Windows:

enter image description here

Para definir privilégios de administrador para executáveis ​​do Windows, você precisa criar um atalho e usar Atalho aba →Advanced (o item de prompt de comando no menu Iniciar já é um atalho):

enter image description here

A janela sempre abre em C: \ windows \ system32, em vez do meu diretório Users (como na técnica aprovada 1) ou na pasta em que quero estar (como na técnica aprovada 2). Por isso, muitas vezes tenho que mudar de diretório para chegar onde quero ir.

Isso é normal e faz sentido, pois, se você estiver abrindo um prompt de comando do administrador, provavelmente estará fazendo algumas ações do sistema para as quais precisa de privilégios de administrador em vez de ações do usuário para as quais já tem permissões.

Você pode definir o diretório padrão globalmente adicionando / editando Autorun entrada de registro (não precisa ser uma string expansível para usar variáveis ​​de ambiente):

REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"Autorun"="cd /d \"%userprofile%\""

Agora, sempre que você abrir um prompt de comando usando qualquer método será automaticamente padrão (bem, tecnicamente diretório de mudanças) para o seu diretório de perfil do usuário.

Melhor ainda, você pode adicionar outros comandos para serem executados automaticamente sempre que abrir um prompt de comando usando o comando & operador (por exemplo, cd /d %userprofile% & cls & dir). Além disso, você pode definir o mesmo valor na mesma chave sob o HKLM ramificação para configurá-lo para todos os usuários.


Observe que você ainda terá que aceitar o prompt do UAC. Infelizmente não há (atualmente?) Nenhuma maneira de criar uma lista de permissões do UAC de programas confiáveis ​​para que o prompt de comando possa ser executado como administrador sem ter que aceitar o prompt. Isso deixa você com (a) poucas opções.

  • Você pode desativar ou desativar completamente o UAC (useraccountcontrolsettings.exe)
  • Você pode usar um programa de elevação de privilégios como Elevador aka elevar-me ou o PowerToy de elevação
  • Crie um elevado agendado  tarefa, insira as credenciais (uma vez) para ele e crie um atalho para a tarefa

No primeiro caso, você evita o UAC completamente, enquanto nos dois últimos, você só insere suas credenciais uma vez ao criar o atalho.


37



Há um problema com a configuração do diretório atual via autorun. Com esse valor definido, cd /d "%userprofile%" autoruns não apenas ao abrir uma nova janela de console, mas também toda vez que um novo thread de execução é invocado. Isso pode causar problemas, por exemplo, com for /f rotações. Tente isso em um prompt de cmd: cd "\Program Files" então for /f "delims=" %I in ('cmd /c cd') do @echo %I. Você verá o for /f loop pensa que seu diretório de trabalho atual é $ home, não Program Files. É mais seguro modificar o cmd atalho e definir o alvo como "%comspec%" /k cd /d "%userprofile%". - rojo
Se você deseja preservar a versão do Windows e as informações de direitos autorais ao abrir uma nova janela de console, defina o destino do atalho como %comspec% /c cd /d "%USERPROFILE%" & %comspec% - rojo
+1 para resposta de edição sem registro. A outra resposta pode ter sido boa em 2012, mas eu não quero tentar no Windows 10 hoje. - Alan


A solução que uso é abrir o prompt de comando abrindo o menu Iniciar, digitando 'cmd' e pressionando Ctrl+Mudança+Entrar. Isso fará com que o programa selecionado seja iniciado como administrador.


18



Existe uma alternativa que não requer "pesquisa"? (porque pelo que eu sei, digitar coisas na caixa realmente faz a pesquisa) - Pacerier
Só outra maneira que eu sei é a resposta de Luke, desabilite o UAC. A busca por cmd é bem rápida, não dá nem para pressionar Ctrl + Shift + Enter antes de encontrá-lo. - Dracs
Eu faço isso o tempo todo nos computadores dos clientes. Ele encontra o CMD bem rápido - Canadian Luke
Isso carregará como administrador? - barlop
@barlop Sim, essa tecla de atalho (Ctrl + Shift + Enter) iniciará o programa realçado no menu Iniciar como administrador. - Dracs


Para executar automaticamente CMD como administrador cada vez que é clicado (sem ter que clicar com o botão direito do mouse ou criar atalhos adicionais), há uma correção fácil para isso:

  1. No Editor do Registro, navegar para:
    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

    • Se não houver Layers pasta, você terá que criar um e nomeá-lo:
      Clique com o botão direito do AppCompatFlags seleção de pasta Novo → Chave
  2. Clique direito Layersselecione Novo → Valor da cadeia. Defina o nome do seu novo valor de string para o caminho completo para (CMD.EXE) prompt de comando (ou seja, C:\Windows\System32\cmd.exe)

  3. Clique duas vezes no novo valor de string para modificá-lo e defina "Dados do valor" para RUNASADMIN.

Eu tive o mesmo aborrecimento, e isso funcionou para mim.


12





Se você quiser que o CMD.exe seja sempre executado como administrador, adicione o seguinte código de registro ao seu Registro:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Windows\\System32\\cmd.exe"="~ RUNASADMIN"
"C:\\Windows\\SysWOW64\\cmd.exe"="~ RUNASADMIN"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Windows\\System32\\cmd.exe"="~ RUNASADMIN"
"C:\\Windows\\SysWOW64\\cmd.exe"="~ RUNASADMIN"

10



Isso funcionou para mim no Windows 8.1. Agora eu só bati no Windows-R, cmd, Enter. Ele também funciona para abrir uma janela de comando do Gerenciador de arquivos por meio da janela de comando Shift-RightClick> Abrir aqui. - Troy Gizzi
Se isso funcionar, esta é a resposta correta, apesar da versão muito mais longa aceita atualmente. - Xodarap777
Isso funciona para o Windows 10 também. Coloque o conteúdo no bloco de notas, salve-o com uma extensão .reg e execute-o - Chris Halcrow


A maneira mais fácil de contornar todo o sofrimento do UAC, etc, é configurar uma entrada de Agendamento de Tarefa para executar o cmd.exe usando os privilégios mais altos. Não crie um evento Trigger para ele e certifique-se de que a caixa de seleção Permitir que a tarefa seja executada por demanda esteja marcada na guia Configurações. Além disso, na guia Configurações, verifique se a lista suspensa "Se a tarefa já estiver em execução e, em seguida, a regra a seguir se aplica" estiver definida como Não iniciar uma nova instância.

Em seguida, crie um atalho para isso em sua área de trabalho e execute-o de lá, ou através de uma tecla de atalho ou fixe o atalho na barra de tarefas.

Eu fiz isso no meu sistema Windows 7 e funciona perfeitamente.


4



Opa, esqueci de especificar uma coisa importante. Aqui está o caminho de destino para o atalho para a tarefa. C: \ Windows \ System32 \ schtasks.exe / run / TN "prompt de comando sem o UAC". O texto dentro das aspas é o que você nomear a tarefa quando você cria a tarefa. - Peter Wills
não inclua o seu ID de email nas suas respostas - BlueBerry - Vignesh4303


Houve algumas ferramentas que usei que foram outras soluções alternativas (além do que Jesse mencionou).

Quando o Vista apareceu pela primeira vez, a Microsoft lançou um "elevar"powerToy que foi bastante útil e fez o trabalho e ainda, acredito (não testei) funciona para o Windows 7. Coloque-o no seu ambiente de caminho e você pode executar" elevar iisreset "a partir de um prompt de comando normal cmd "desde o início / executar ou criar um atalho)


3





Basta copiar e colar cmd.exe e renomeá-lo como "cmda.exe" na pasta \ system32 \ (337 KB não é nem um grande problema ...). A opção "executar como administrador" nas propriedades do cmda.exe não ficará mais esmaecida e você poderá defini-la para ser sempre executada como administrador. Agora você terá dois prompts de comando: o primeiro é regular, o segundo tem um privilégio (a) dmin. É tão fácil digitar "cmda" em Ganhar barra de pesquisa como você faz com "cmd"!

Para o cmd no menu de contexto com privilégio de administrador, verifique se você já tem cmda.exe no lugar, adicione isso ao novo arquivo .reg e inicie-o

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmda]
@="Open command window here (Administrator)"
"HasLUAShield"=""
"Extended"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmda\Command]
@="cmda.exe /s /k pushd \"%V\""

Você verá duas mesmas linhas no menu de contexto (shift); um Prompt de Comando não elevado e outro com "(Administrador)" adicionados.

É isso aí...


2