Boa resposta. Eu adicionei e editei para fazê-lo funcionar em uma linha de comando!
Preet Sangha de
1
Eu criei um arquivo em lote com isso e salvei-o como admincmd.bat na minha pasta do Windows, então tudo que tenho a fazer é digitar "admincmd", pressione Enter e ele abre um cmd admin. (Eu também adicionei outra linha ao arquivo em lote com " sair "para fechar a janela cmd não administrativa)
Tony Brix
Por que não colocar o cmd (e quaisquer parâmetros) no final. Ter o comando é estranho do ponto de vista da legibilidade.
Eric Fossum
38
De acordo com a documentação , o modelo de segurança do Windows ...
não concede privilégios administrativos em todos os momentos. Mesmo os administradores são executados com privilégios padrão quando executam tarefas não administrativas que não requerem privilégios elevados.
Você tem a opção Criar esta tarefa com privilégios administrativos na caixa de diálogo Criar nova tarefa ( Gerenciador de tarefas> Arquivo> Executar nova tarefa ), mas não há uma maneira integrada de elevar privilégios de maneira eficaz usando a linha de comando.
No entanto, existem algumas ferramentas de terceiros (dependendo internamente de APIs do Windows) que você pode usar para elevar os privilégios da linha de comando:
Obrigado, nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1finalmente funcionou. As outras runas /user:...formas solicitam uma senha, apesar de já ser um administrador (modo de lote morto).
Marcos
Obrigado pornircmdc elevate cmd
tim
4
Depois de instalar nircmd, para que funcione como o Linux sudo, crie umsudo.bat arquivo em seu caminho com este conteúdo: nircmd elevate %*. Então você pode fazer, por exemplo,sudo net stop W3SVC
Kip
1
Acho que Windosu é de longe a maneira mais simples e elegante de fazer isso, especialmente se você for um dev ... obrigado cara. Eu sinto que estou no sistema nix: D
Emmanuel Mahuni
Amado windosu :)
Finlay Roelofs
32
Não tenho reputação suficiente para adicionar um comentário à resposta principal, mas com o poder dos aliases, você pode se safar apenas digitando o seguinte:
powershell "start cmd -v runAs"
Esta é apenas uma versão mais curta da excelente solução user3018703:
Maneira simples que fiz depois de tentar outras respostas aqui
Método 1: SEM um programa de terceiros (usei este)
Crie um arquivo chamado sudo.bat(você pode substituirsudo pelo nome que desejar) com o seguinte conteúdo
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
Mova sudo.batpara uma pasta em seu PATH; se você não sabe o que isso significa, basta mover esses arquivos parac:\windows\
Agora sudofuncionará na caixa de diálogo Executar ( win+r) ou na barra de endereço do explorer (esta é a melhor parte :))
Embora ambos soluções de trabalho, infelizmente, eles vão resultar na UAC diálogo aparecendo no topo (z-ordem sábio), mas não ficar focado . (Testado em Win10x64 v1607 build14393.447.)
Ogmios
@Ogmios isso é bastante estranho. a caixa de diálogo funciona corretamente quando não iniciada dessa forma? Estou muito feliz em usar isso sem esses problemas. Talvez seja por causa de alguma outra configuração que você alterou?
Dheeraj Bhaskar
Sim, a caixa de diálogo do UAC funciona conforme o esperado em todas as outras situações (que encontrei). Esta é a única exceção. E é claro que mudei meu sistema de outras maneiras, mas não encontrei nada que possa ter um efeito oculto nesta caixa de diálogo.
Ogmios
@Ogmios, desculpe, cara, não consigo pensar em mais nada que você possa fazer para consertar isso. Você provavelmente deve tentar as outras soluções para ver se elas são melhores para você. Saúde
Dheeraj Bhaskar
Embora o PowerShell não seja um terceiro, não é um programa de estoque, e você está escrevendo um programa de terceiro para atingir o objetivo.
undrline de
13
Eu uso programas nirsoft (por exemplo, nircmdc) e sysinternals (por exemplo, psexec) o tempo todo. Eles são muito úteis.
Mas se você não quiser ou não puder fazer dl de um programa de terceiros, aqui está outra maneira, puro Windows.
Resposta curta : você pode, enquanto elevado, criar uma tarefa agendada com privilégios elevados que você pode invocar mais tarde enquanto não estiver elevado.
Resposta de comprimento médio : embora elevado crie tarefa com (mas eu prefiro GUI do agendador de tarefas):
O seguinte, como um arquivo em lote, abrirá um prompt de comando elevado com o caminho definido para o mesmo diretório de onde o arquivo em lote foi chamado
set OLDDIR=%CD%
powershell -Command "Start-Process cmd -ArgumentList '/K cd %OLDDIR%' -Verb RunAs "
Para fazer isso funcionar, você deve editar as propriedades de psexec.exe e, na guia de compatibilidade, marcar "Executar como Administrador". Caso contrário, você obterá o erro: PSEXESVC não instalado. Mas o psexec causa problemas com a tecla tab no cmd.exe. Não é possível usar a guia para completar os nomes das pastas.
Peter Quiring
Não tenho certeza em qual ambiente você tentou, mas não precisei alterar a configuração "Executar como administrador" (você está tentando executar o cmd.exe em uma máquina remota da sua?). Também sem problemas com a tecla tab, posso completar com sucesso os nomes dos arquivos e pastas (pelo menos testado no Win8.1 e Win10, rodando a partir das linhas de comando cmd e PowerShell)
David Rodriguez
Estou usando o Win10 e executando-o localmente. Não sei por que isso acontece comigo e não com você. Consegui fazer o nircmd funcionar e não causa problema de guia.
Peter Quiring
Também noto que não é possível preencher automaticamente com a tecla tab, mas pelo menos isso abriria um prompt de cmd elevado no contexto de outro usuário, o que os métodos anteriores acima não pareciam atingir quando tentei. O sinalizador '-h' é ótimo (windows 10), funciona muito bem.
user1840734
4
Faça com que o arquivo em lote salve as credenciais da conta do administrador real usando a /savecredopção. Isso solicitará as credenciais pela primeira vez e, em seguida, armazenará a senha criptografada no gerenciador de credenciais. Em seguida, em todas as vezes subsequentes em que o lote for executado, ele será executado como administrador completo, mas não solicitará as credenciais porque elas são armazenadas criptografadas no gerenciador de credenciais e o usuário final não consegue obter a senha. O seguinte deve abrir um CMD elevado com privilégios totais de administrador e só solicitará a senha na primeira vez:
Embora ambas as soluções fornecidas pelo trabalho Dheeraj Bhaskar, infelizmente, eles vão resultar na UAC diálogo aparecendo no topo (z-ordem sábio), mas não ficar focado (a janela focada é chamada cmd / powershell janela), assim eu nem necessidade de pegue o mouse e clique em "sim" ou selecione a janela do UAC usando Alt + Shift + Tab. (Testado em Win10x64 v1607 build14393.447; UAC = "[...] não escurecer [...]" .)
A solução a seguir é um pouco estranha, pois usa dois arquivos, mas preserva a ordem correta do foco, portanto, nenhuma ação extra do mouse / teclado é necessária (além de confirmar a caixa de diálogo do UAC: Alt + Y ).
cmdadm.lnk (propriedades de atalho / Avançado ... / Executar como administrador = LIGADO)
%SystemRoot%\System32\cmd.exe /k "cd /d"
@ECHO OFF
SETLOCAL EnableDelayedExpansion EnableExtensions
NET SESSION >nul 2>&1
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO :EOF
:ELEVATE
SET this="%CD%"
SET this=!this:\=\\!
MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('CMD', '/K CD /D \"!this!\"', '', 'runas', 1);close();"
EXIT 1
salve este script como "god.cmd" em seu system32 ou qualquer que seja o seu caminho direcionando ....
se vc abrir um cmd em e: \ mypictures \ e digitar god ele pedirá suas credenciais e o colocará de volta no mesmo lugar que o administrador ...
powershell é legal, mas precisa de módulos ... sou oldscool ... só preciso do sistema ...
jOte-
Este método / truque de elevação também funciona para caminhos / nomes de arquivos longos? Ou devo usar "% ~ snx0" ou "% ~ dpsnx0" em vez disso?
script'n'code 01 de
2
Semelhante a algumas das outras soluções acima, criei um elevate arquivo em lote que executa uma janela elevada do PowerShell, ignorando a política de execução para permitir a execução de tudo, desde comandos simples a arquivos em lote a scripts PowerShell complexos. Recomendo colocá-lo na pasta C: \ Windows \ System32 para facilitar o uso.
O elevatecomando original executa sua tarefa, captura a saída, fecha a janela gerada do PowerShell e retorna, gravando a saída capturada na janela original.
Eu criei duas variantes, elevatepeelevatex , que respectivamente pausam e mantêm a janela do PowerShell aberta para mais trabalho.
E caso meu link morra, aqui está o código para o arquivo de lote original:
@Echo Off
REM Executes a command in an elevated PowerShell window and captures/displays output
REM Note that any file paths must be fully qualified!
REM Example: elevate myAdminCommand -myArg1 -myArg2 someValue
if "%1"=="" (
REM If no command is passed, simply open an elevated PowerShell window.
PowerShell -Command "& {Start-Process PowerShell.exe -Wait -Verb RunAs}"
) ELSE (
REM Copy command+arguments (passed as a parameter) into a ps1 file
REM Start PowerShell with Elevated access (prompting UAC confirmation)
REM and run the ps1 file
REM then close elevated window when finished
REM Output captured results
IF EXIST %temp%\trans.txt del %temp%\trans.txt
Echo %* ^> %temp%\trans.txt *^>^&1 > %temp%\tmp.ps1
Echo $error[0] ^| Add-Content %temp%\trans.txt -Encoding Default >> %temp%\tmp.ps1
PowerShell -Command "& {Start-Process PowerShell.exe -Wait -ArgumentList '-ExecutionPolicy Bypass -File ""%temp%\tmp.ps1""' -Verb RunAs}"
Type %temp%\trans.txt
)
) (TargetCmd é executado em uma janela elevada de cmd)
Embora sejam 3 arquivos, você pode colocar tudo (incluindo o targetCmd) em alguma subpasta (não se esqueça de adicionar o folderName aos patches) e renomear "start.cmd" para o único nome de destino
Para mim, parece a maneira mais nativa de fazer isso, enquanto cmd não tem o comando necessário
Li todas as soluções acima e as compreendi. eu não entendo os seus passos. estou escolhendo a solução com os melhores prós e contras.
Dzmitry Lahoda
0
Não tenho certeza se a ferramenta ExecElevated.exe (13 KB) fará o trabalho .... mas pode. Ou pelo menos ser útil para outras pessoas com necessidades semelhantes que vieram a esta página como eu (mas não encontrei a solução, então acabei criando a ferramenta sozinho em .Net).
Ele executará um aplicativo com token elevado (no modo de administrador). Mas você receberá uma caixa de diálogo do UAC para confirmar! (talvez não se o UAC foi desativado, não o testei).
E a conta que chama a ferramenta também deve ter admin. direitos, é claro.
Aqui está uma forma de integração com o explorer. Ele irá abrir um item de menu extra quando você clicar com o botão direito em qualquer pasta no Windows Explorer:
depois de digitar este comando, você deve inserir sua senha de administrador (se você não souber sua senha de administrador, deixe em branco e pressione Enter ou digite algo, funcionou para mim).
@DzmitryLahoda você pode me informar o erro que você obteve?
Harish Regada
-2
Pressione a tecla Windows + X e agora você pode selecionar o Powershell ou Prompt de comando com direitos de administrador. Funciona se você for o administrador. A função pode ficar inutilizável se o sistema não for seu.
Existem várias maneiras de abrir um cmd elevado, mas apenas o seu método funciona no prompt de comando padrão. Você só precisa usernão colocar username:
Isso não é a mesma coisa que executar um comando elevado, porque quando eu abro uma janela cmd elevada e digito "whoami", o resultado é o mesmo que uma janela não elevada. Quando executo "whoami / all" em ambos os casos, posso ver as diferenças em termos de permissões para o mesmo usuário.
Constantino Cronemberger
-5
Eu usei o runas /user:domainuser@domain cmdque abriu um prompt elevado com sucesso.
Requer as credenciais de outro usuário. Se você já é Administrador e deseja executar com privilégios elevados, como quando você clica com o botão direito em um aplicativo e escolhe executar como administrador e nenhuma senha é solicitada, apenas uma caixa de diálogo de confirmação, então você precisa de outra coisa. Vim aqui em busca dessa resposta, mas parece que não estou aqui.
Respostas:
Encontrei o mesmo problema e a única maneira de abrir o CMD como administrador do CMD foi fazendo o seguinte:
powershell -Command "Start-Process cmd -Verb RunAs"
e pressioneEnterfonte
De acordo com a documentação , o modelo de segurança do Windows ...
Você tem a opção Criar esta tarefa com privilégios administrativos na caixa de diálogo Criar nova tarefa ( Gerenciador de tarefas> Arquivo> Executar nova tarefa ), mas não há uma maneira integrada de elevar privilégios de maneira eficaz usando a linha de comando.
No entanto, existem algumas ferramentas de terceiros (dependendo internamente de APIs do Windows) que você pode usar para elevar os privilégios da linha de comando:
NirCmd :
nircmdc elevate cmd
Windosu :
npm install -g windosu
(requer node.js instalado)sudo cmd
fonte
nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1
finalmente funcionou. As outrasrunas /user:...
formas solicitam uma senha, apesar de já ser um administrador (modo de lote morto).nircmdc elevate cmd
nircmd
, para que funcione como o Linuxsudo
, crie umsudo.bat
arquivo em seu caminho com este conteúdo:nircmd elevate %*
. Então você pode fazer, por exemplo,sudo net stop W3SVC
windosu
:)Não tenho reputação suficiente para adicionar um comentário à resposta principal, mas com o poder dos aliases, você pode se safar apenas digitando o seguinte:
Esta é apenas uma versão mais curta da excelente solução user3018703:
fonte
Maneira simples que fiz depois de tentar outras respostas aqui
Método 1: SEM um programa de terceiros (usei este)
sudo.bat
(você pode substituirsudo
pelo nome que desejar) com o seguinte conteúdopowershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
sudo.bat
para uma pasta em seuPATH
; se você não sabe o que isso significa, basta mover esses arquivos parac:\windows\
sudo
funcionará na caixa de diálogo Executar ( win+r) ou na barra de endereço do explorer (esta é a melhor parte :))Método 2: COM um programa de terceiros
sudo.bat
(você pode substituirsudo
pelo nome que desejar) com o seguinte conteúdonircmdc elevate cmd /k "cd /d %cd%"
nircmdc.exe
esudo.bat
para uma pasta em seuPATH
; se você não sabe o que isso significa, basta mover esses arquivos parac:\windows\
sudo
funcionará na caixa de diálogo Executar ( win+r) ou na barra de endereço do explorer (esta é a melhor parte :))fonte
Eu uso programas nirsoft (por exemplo, nircmdc) e sysinternals (por exemplo, psexec) o tempo todo. Eles são muito úteis.
Mas se você não quiser ou não puder fazer dl de um programa de terceiros, aqui está outra maneira, puro Windows.
Resposta curta : você pode, enquanto elevado, criar uma tarefa agendada com privilégios elevados que você pode invocar mais tarde enquanto não estiver elevado.
Resposta de comprimento médio : embora elevado crie tarefa com (mas eu prefiro GUI do agendador de tarefas):
Então, mais tarde, nenhuma elevação necessária, invoque com
Resposta longa : há muitos detalhes inquietantes; veja a entrada do meu blog "Iniciar programa SEM UAC, útil na inicialização do sistema e em arquivos em lote (use o agendador de tarefas)"
fonte
O seguinte, como um arquivo em lote, abrirá um prompt de comando elevado com o caminho definido para o mesmo diretório de onde o arquivo em lote foi chamado
fonte
Minha maneira favorita de fazer isso é usando PsExec.exe da SysInternals, disponível em http://technet.microsoft.com/en-us/sysinternals/bb897553
O interruptor "-h" é o que faz a mágica:
-h Se o sistema de destino for Vista ou superior, executa o processo com o token elevado da conta, se disponível.
fonte
Faça com que o arquivo em lote salve as credenciais da conta do administrador real usando a
/savecred
opção. Isso solicitará as credenciais pela primeira vez e, em seguida, armazenará a senha criptografada no gerenciador de credenciais. Em seguida, em todas as vezes subsequentes em que o lote for executado, ele será executado como administrador completo, mas não solicitará as credenciais porque elas são armazenadas criptografadas no gerenciador de credenciais e o usuário final não consegue obter a senha. O seguinte deve abrir um CMD elevado com privilégios totais de administrador e só solicitará a senha na primeira vez:fonte
Embora ambas as soluções fornecidas pelo trabalho Dheeraj Bhaskar, infelizmente, eles vão resultar na UAC diálogo aparecendo no topo (z-ordem sábio), mas não ficar focado (a janela focada é chamada cmd / powershell janela), assim eu nem necessidade de pegue o mouse e clique em "sim" ou selecione a janela do UAC usando Alt + Shift + Tab. (Testado em Win10x64 v1607 build14393.447; UAC = "[...] não escurecer [...]" .)
A solução a seguir é um pouco estranha, pois usa dois arquivos, mas preserva a ordem correta do foco, portanto, nenhuma ação extra do mouse / teclado é necessária (além de confirmar a caixa de diálogo do UAC: Alt + Y ).
%SystemRoot%\System32\cmd.exe /k "cd /d"
@start cmdadm.lnk %cd%
Corra com
su
.fonte
Eu tenho usado
Elevate
por um tempo agora.É a descrição -
This utility executes a command with UAC privilege elevation. This is useful for working inside command prompts or with batch files.
Eu copio
bin.x86-64\elevate.exe
do.zip
paraC:\Program Files\elevate
e adiciono esse caminho ao meuPATH
.Então, GitBash, posso executar algo como
elevate sc stop W3SVC
desligar oIIS
serviço.Executar o comando me dá o
UAC
caixa de diálogo, devidamente focada com o controle do teclado e, ao aceitar a caixa de diálogo, retorno ao meu shell.fonte
..
salve este script como "god.cmd" em seu system32 ou qualquer que seja o seu caminho direcionando ....
se vc abrir um cmd em e: \ mypictures \ e digitar god ele pedirá suas credenciais e o colocará de volta no mesmo lugar que o administrador ...
fonte
Semelhante a algumas das outras soluções acima, criei um
elevate
arquivo em lote que executa uma janela elevada do PowerShell, ignorando a política de execução para permitir a execução de tudo, desde comandos simples a arquivos em lote a scripts PowerShell complexos. Recomendo colocá-lo na pasta C: \ Windows \ System32 para facilitar o uso.O
elevate
comando original executa sua tarefa, captura a saída, fecha a janela gerada do PowerShell e retorna, gravando a saída capturada na janela original.Eu criei duas variantes,
elevatep
eelevatex
, que respectivamente pausam e mantêm a janela do PowerShell aberta para mais trabalho.https://github.com/jt-github/elevate
E caso meu link morra, aqui está o código para o arquivo de lote original:
fonte
Pode usar uma variável de ambiente temporária para usar com um atalho elevado (
start.cmd
ascladm.lnk (atalho)
(para fazer alterações de caminho, você precisará criar temporariamente o
env.Variable
)ascladm.cmd
) (TargetCmd é executado em uma janela elevada de cmd)
Embora sejam 3 arquivos, você pode colocar tudo (incluindo o targetCmd) em alguma subpasta (não se esqueça de adicionar o folderName aos patches) e renomear "start.cmd" para o único nome de destino
Para mim, parece a maneira mais nativa de fazer isso, enquanto cmd não tem o comando necessário
fonte
Não tenho certeza se a ferramenta ExecElevated.exe (13 KB) fará o trabalho .... mas pode. Ou pelo menos ser útil para outras pessoas com necessidades semelhantes que vieram a esta página como eu (mas não encontrei a solução, então acabei criando a ferramenta sozinho em .Net).
Ele executará um aplicativo com token elevado (no modo de administrador). Mas você receberá uma caixa de diálogo do UAC para confirmar! (talvez não se o UAC foi desativado, não o testei).
E a conta que chama a ferramenta também deve ter admin. direitos, é claro.
Exemplo de uso:
fonte
O método de Dheeraj Bhaskar com o Powershell tem um espaço ausente, pelo menos para a encarnação do Windows 10 do Powershell.
A linha de comando dentro de seu sudo.bat deve ser
Observe o espaço extra após% cd%
;) Frode
fonte
Aqui está uma forma de integração com o explorer. Ele irá abrir um item de menu extra quando você clicar com o botão direito em qualquer pasta no Windows Explorer:
Aqui estão as etapas:
* Use pushd em vez de cd para permitir que funcione em qualquer unidade. :-)
fonte
Você pode usar a seguinte sintaxe, eu tinha a mesma dúvida e não achei que um script deveria ser necessário.
Isso funcionou para mim, pode ser diferente na sua rede.
fonte
Basta usar o comando: runas / noprofile / user: administrador cmd
fonte
Fiz isso facilmente usando o seguinte comando em cmd
runas / netonly / user: Administrador \ Administrador cmd
depois de digitar este comando, você deve inserir sua senha de administrador (se você não souber sua senha de administrador, deixe em branco e pressione Enter ou digite algo, funcionou para mim).
fonte
Pressione a tecla Windows + X e agora você pode selecionar o Powershell ou Prompt de comando com direitos de administrador. Funciona se você for o administrador. A função pode ficar inutilizável se o sistema não for seu.
fonte
Existem várias maneiras de abrir um cmd elevado, mas apenas o seu método funciona no prompt de comando padrão. Você só precisa
user
não colocarusername
:Consulte a ajuda relevante da comunidade Microsoft .
fonte
Eu usei o
runas /user:domainuser@domain cmd
que abriu um prompt elevado com sucesso.fonte