Como posso sempre executar o prompt de comando como administrador?


104

Como desenvolvedor, muitas vezes tenho a necessidade de abrir um prompt de comando para vários propósitos. Por exemplo, eu uso iisresetpara reiniciar meu servidor web local.

Normalmente, abro a janela de comando de duas maneiras:

  1. Pressione Win, digite "cmd" e pressioneEnter
  2. Enquanto estiver no Explorer, mantenha pressionado Shifte clique com o botão direito do mouse em uma pasta e escolha "Abrir janela de comando aqui"

No entanto, quando abro a janela de comando de qualquer uma dessas maneiras, não tenho os privilégios totais de administrador aos quais sinto que tenho direito.

Sou administrador, mas o cmd.exe não sabe que

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

  1. Pressione Win, digite "cmd"
  2. Aguarde o menu preencher
  3. Levante a mão do teclado e coloque-o no mouse
  4. Clique com o botão direito do mouse no item de menu "cmd.exe"
  5. Escolha "Executar como administrador"

Isso é inaceitável por vários motivos:

  • A janela sempre é aberta em C: \ windows \ system32, em vez do meu Usersdiretório (como na técnica aprovada 1) ou da 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 que qualquer um dos meus métodos preferidos. Realizado várias vezes ao dia, todos os dias pelo restante da minha carreira, soma cerca de dez dias de tempo perdido, clicando e aguardando e alterando o diretório.
  • Como programador, executar uma tarefa robótica sem sentido me causa uma grande dor emocional.
  • Como programador, levantar minha mão é uma tarefa árdua que me causa uma grande dor física.

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

Muitos programas permitem alterar permanentemente o nível de privilégio padrão no menu Propriedades. O prompt de comando não é um desses programas.

insira a descrição da imagem aqui

Como faço para que a janela de comando seja executada como administrador por padrão (mesmo ao usar a opção de menu de contexto "Abrir janela de comando aqui")?


Por que não mudar apenas o UAC para elevar apenas?
surfasb

Não vejo a opção "elevar apenas" no meu controle deslizante do UAC. Você está se referindo a algo além da janela Configurações de controle de conta de usuário?
26712 Kevin

6
Eu acho que é a hora do martelo ...
ThunderToes

Respostas:


88

Para responder à primeira parte da sua pergunta, quando você pressiona a tecla Windows e digita "CMD", pode pressionar Ctrl+ Shift+ Enterpara 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 mesclará as alterações no registro e adicionará a opção aos seus menus de contexto. (Nenhuma tecla Shift é necessária.)


7
Nota; você ainda precisará aceitar o prompt do UAC nos dois casos.
Synetech

1
Registro editar doesnt trabalho no Windows 8.
Biker John

O patch do registro funciona para o Server 2012 R2
fiat

Não funcionou para mim no Windows 7
Hello Universe

1
Se você não vir o comando após a execução do arquivo reg, sair do Windows e login novamente.
trebormf

38

Muitos programas permitem alterar permanentemente o nível de privilégio padrão no menu Propriedades. O prompt de comando não é um desses programas.

A guia Compatibilidade está completamente desabilitada para todos os executáveis ​​do Windows:

insira a descrição da imagem aqui

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

insira a descrição da imagem aqui

A janela sempre é aberta em C: \ windows \ system32, e não no 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á executando 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 você já tem permissão.

Você pode definir o diretório padrão globalmente adicionando / editando a Autorunentrada do registro (ela nem precisa ser uma cadeia de caracteres 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 , o padrão será automaticamente (bem, tecnicamente, o diretório de alteração ) para o 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 &operador (por exemplo, cd /d %userprofile% & cls & dir). Além disso, você pode definir o mesmo valor na mesma chave na HKLMramificação para defini-lo para todos os usuários.


Observe que você ainda precisará aceitar o prompt do UAC. Infelizmente (atualmente?) Não há como 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.

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


Há um problema com a configuração do diretório atual via execução automática. Com esse valor definido, as cd /d "%userprofile%"execuções automáticas não apenas ao abrir uma nova janela do console, mas também sempre que um novo encadeamento de execução é chamado. Isso pode causar problemas, por exemplo, com for /floops. Tente isso em um prompt do cmd: cd "\Program Files"then for /f "delims=" %I in ('cmd /c cd') do @echo %I. Você verá que o for /floop acha que seu diretório de trabalho atual é $ home, não Arquivos de Programas. É mais seguro modificar o cmdatalho e definir o destino como "%comspec%" /k cd /d "%userprofile%".
Rogerio

Se você deseja preservar a versão do Windows e as informações de direitos autorais ao abrir uma nova janela do console, defina o destino do atalho para%comspec% /c cd /d "%USERPROFILE%" & %comspec%
rojo

+1 para resposta de edição que não é de registro. A outra resposta pode ter sido boa em 2012, mas não quero experimentá-lo no Windows 10 hoje.
Alan

19

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


1
Existe uma alternativa que não exija "pesquisa"? (porque pelo que eu sei coisas escrevendo na caixa na verdade não busca)
Pacerier

Apenas outra maneira que eu sei é a resposta de Luke, desative o UAC. A busca pelo cmd é bem rápida, nem consegue pressionar Ctrl + Shift + Enter antes de encontrá-lo.
Dracs

Faço isso o tempo todo nos computadores dos clientes. Ele encontra CMD muito muito rápido
canadense Luke

Isso o carregará como administrador?
barlop

@barlop Sim, essa tecla de atalho (Ctrl + Shift + Enter) iniciará o programa destacado no menu Iniciar como administrador.
Dracs

12

Para executar automaticamente CMDcomo administrador sempre que é clicado (sem precisar clicar com o botão direito do mouse ou criar atalhos adicionais), existe uma solução fácil para isso:

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

    • Se não houver uma Layerspasta , será necessário criar uma e nomeá-la:
      Clique com o botão direito do mouse na AppCompatFlagspasta e selecione NewKey
  2. Clique com o botão direito Layers, selecione NewString Value. Defina o nome do seu novo valor de sequência como o caminho completo para o CMD.EXEprompt de comando ( C:\Windows\System32\cmd.exe) (ou seja )

  3. Clique duas vezes no novo valor da sequência para modificá-lo e defina os "Dados do valor" para RUNASADMIN.

Eu tinha o mesmo aborrecimento e isso funcionou para mim.


11

Se você deseja que o CMD.exe seja sempre executado como administrador, basta adicionar o código de registro abaixo 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"

2
Isso funcionou para mim no Windows 8.1. Agora eu apenas pressione Windows-R, cmd, Enter. Ele também funciona para abrir uma janela de comando no File Explorer via Shift-RightClick> Abrir janela de comando aqui.
Troy Gizzi

1
Se isso funcionar, esta é a resposta correta, apesar da versão muito mais 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

Não funcionou para mim. A parte HKLM nem se registrou, por algum motivo. Debata se isso ainda funciona: superuser.com/questions/961573/… , com alternativas.
Ray Woodcock

4

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

Voltar quando o Vista foi lançado, a Microsoft saiu com um " elevar powertoy" que foi bastante útil e fez o trabalho e ainda, eu acredito (não testei) trabalha para o Windows 7. soltá-lo em seu ambiente de caminho e você pode executar "elevar iisreset" em um prompt de comando normal (ou até "elevar cmd" desde o início / execução ou criar um atalho)


Aqui está um link direto para o download.
ashleedawg 20/02

4

A maneira mais fácil de contornar todo o sofrimento do UAC, etc, é configurar uma entrada do Agendamento de tarefas para executar o cmd.exe usando os privilégios mais altos. Não crie um evento Trigger para ele e verifique se a caixa de seleção Permitir que a tarefa seja executada sob demanda está marcada na guia Configurações. Também na guia Configurações, verifique se o menu suspenso "Se a tarefa já está em execução e a seguinte regra se aplica" está definido como Não iniciar uma nova instância.

Em seguida, crie um atalho para isso na área de trabalho e execute-o a partir daí, 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.


1
Opa, esqueci de especificar uma coisa importante. Aqui está o caminho de destino do atalho para a tarefa. C: \ Windows \ System32 \ schtasks.exe / run / TN "prompt de comando sem UAC". O texto dentro das aspas é o nome que você atribui à tarefa quando a cria.
Peter Wills

não coloque seu ID de e-mail nas suas respostas
BlueBerry - Vignesh4303 25/13

2

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

Para o menu cmd in context com privilégio de administrador, verifique se você já possui o cmda.exe, adicione-o 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)" adicionado.

É isso aí...


1

Crie um atalho para o cmd.exe, clique com o botão direito do mouse e selecione Propriedades. Na guia Atalho, selecione Avançado, marque Executar como Administrador.


1

Eu acho que a maneira mais fácil de sempre executar o cmd como administrador é criar o arquivo .reg com o código abaixo:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
@="C:\\Windows\\System32\\cmd.exe"="RUNASADMIN"

Cole isso no bloco de notas ou algo assim e salve como arquivo .reg. Nota: Isso faz com que o prompt de comandos seja executado como administrador para todos os usuários. Para executar sempre como administrador apenas no seu usuário, altere HKEY_LOCAL_MACHINE para HKEY_CURRENT_USER


1

Tudo graças a Jesse Brohinsky

Uma versão mais aprimorada. Isso também inclui o diretório em segundo plano que permite abrir também dentro da pasta. Além disso, você pode abrir o commandpromt como não administrador.

Além disso, você pode desativar o AdminApprovalMode. Dessa forma, você não precisa executar como administrador quando for administrador. http://helpdeskgeek.com/windows-7/turn-off-admin-approval-mode-in-windows-7/

Windows Registry Editor Version 5.00
;write minus before to unreg example: [-HKEY_CLASSES_ROOT\Directory\shell\cmdhere]

[HKEY_CLASSES_ROOT\Directory\shell\cmdhere]
@="Open Command Window Here"

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

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmdhere]
@="Open Command Window Here"

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

[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\""

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

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

0

A única outra maneira, além do que os Dracs mencionaram, é desativar completamente o UAC


0

O seguinte funciona para mim

@echo off
:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------

você receberá o mesmo prompt do uac confirmando para o runas admin .. encontrou-o há algum tempo atrás @ stackexchange

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.