Bagaimana cara membuka cmd yang ditinggikan menggunakan baris perintah untuk Windows?

109

Bagaimana cara membuka prompt perintah yang ditinggikan menggunakan baris perintah pada cmd normal?

Misalnya, saya menggunakan runas /username:admin cmdcmd yang dibuka tetapi sepertinya tidak dinaikkan! Ada solusi?

pengguna2633882
sumber
Saya mencoba semua jawaban. Jawaban yang paling berguna tanpa software apa pun dan paling tidak tidak ada tindakan yang stackoverflow.com/a/40942828/9217577
TheGuardener

Jawaban:

166

Saya mengalami masalah yang sama dan satu-satunya cara saya dapat membuka CMD sebagai administrator dari CMD adalah melakukan hal berikut:

  1. Buka CMD
  2. Tulis powershell -Command "Start-Process cmd -Verb RunAs"dan tekanEnter
  3. Jendela pop-up akan muncul meminta untuk membuka CMD sebagai administrator
Gui
sumber
2
Jawaban yang bagus. Saya menambahkan dan mengedit yang saya gunakan untuk membuatnya berjalan dalam satu baris perintah!
Preet Sangha
1
Saya membuat file batch dengan ini dan menyimpannya sebagai admincmd.bat di folder windows saya jadi yang harus saya lakukan adalah mengetik "admincmd" tekan enter dan itu akan membuka admin cmd. (Saya juga menambahkan baris lain ke file batch dengan " keluar "sehingga menutup jendela cmd non admin)
Tony Brix
Mengapa tidak menempatkan cmd (dan parameter apa pun) di akhir. Memiliki perintah itu aneh dari sudut pandang keterbacaan.
Eric Fossum
38

Menurut dokumentasi , model keamanan Windows ...

tidak memberikan hak administratif setiap saat. Bahkan administrator berjalan di bawah hak istimewa standar saat mereka melakukan tugas non-administratif yang tidak memerlukan hak istimewa yang lebih tinggi.

Anda memiliki opsi Buat tugas ini dengan hak akses administratif di dialog Buat tugas baru ( Pengelola Tugas> File> Jalankan tugas baru ), tetapi tidak ada cara bawaan untuk secara efektif meningkatkan hak istimewa menggunakan baris perintah.

Namun, ada beberapa alat pihak ketiga (secara internal mengandalkan Windows API) yang dapat Anda gunakan untuk meningkatkan hak istimewa dari baris perintah:

NirCmd :

  1. Unduh dan unzip.
  2. nircmdc elevate cmd

windosu :

  1. Instal itu: npm install -g windosu(membutuhkan node.js diinstal)
  2. sudo cmd
Ricardo Stuven
sumber
3
Terima kasih, nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1akhirnya berhasil. Cara lain runas /user:...meminta kata sandi meskipun sudah menjadi admin (mode batch terbunuh).
Marcos
Terima kasih untuknircmdc elevate cmd
tim
4
Setelah intalling nircmd, untuk memilikinya bekerja seperti Linux sudo, membuat sudo.batfile dalam jalur Anda dengan konten ini: nircmd elevate %*. Kemudian Anda dapat melakukannya, misalnya,sudo net stop W3SVC
Kip
1
Saya pikir windosu sejauh ini adalah cara yang paling sederhana dan elegan untuk melakukan ini, terutama jika Anda seorang dev ... thanks man. Saya merasa seperti menggunakan sistem nix: D
Emmanuel Mahuni
mencintai windosu:)
Finlay Roelofs
32

Saya tidak memiliki cukup reputasi untuk menambahkan komentar ke jawaban teratas, tetapi dengan kekuatan alias Anda bisa lolos hanya dengan mengetik yang berikut:

powershell "start cmd -v runAs"

Ini hanyalah versi singkat dari solusi terbaik user3018703:

powershell -Command "Start-Process cmd -Verb RunAs"
Stiegler
sumber
26

Cara sederhana saya lakukan setelah mencoba jawaban lain di sini

Metode 1: TANPA program pihak ke-3 (saya menggunakan ini)

  1. Buat file bernama sudo.bat(Anda dapat mengganti sudodengan nama yang Anda inginkan) dengan konten berikut powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
  2. Pindah sudo.batke folder di PATH; jika Anda tidak tahu apa artinya, cukup pindahkan file ini kec:\windows\
  3. Sekarang sudoakan bekerja di dialog Run ( win+r) atau di address bar explorer (ini adalah bagian terbaik :))

Metode 2: DENGAN program pihak ke-3

  1. Unduh NirCmd dan unzip.
  2. Buat file bernama sudo.bat(Anda dapat mengganti sudodengan nama yang Anda inginkan) dengan konten berikut nircmdc elevate cmd /k "cd /d %cd%"
  3. Pindah nircmdc.exedan sudo.batke folder di PATH; jika Anda tidak tahu apa artinya, cukup pindahkan file ini kec:\windows\
  4. Sekarang sudoakan bekerja di dialog Run ( win+r) atau di address bar explorer (ini adalah bagian terbaik :))
Dheeraj Bhaskar
sumber
Sementara kedua solusi kerja, sayangnya mereka akan menghasilkan UAC dialog muncul di atas (z-order-bijaksana) tetapi tidak mendapatkan fokus . (Diuji pada Win10x64 v1607 build14393.447.)
Ogmios
@Ogos itu agak aneh. apakah dialog akan bekerja dengan baik jika tidak dimulai seperti ini? Saya sangat senang menggunakan ini tanpa masalah seperti itu. Mungkin karena beberapa konfigurasi lain yang Anda ubah?
Dheeraj Bhaskar
Ya, dialog UAC berfungsi seperti yang diharapkan dalam semua situasi lain (yang pernah saya alami). Ini satu-satunya pengecualian. Dan tentu saja saya telah mengubah sistem saya dengan cara lain, tetapi saya belum menemukan apa pun yang mungkin memiliki efek tersembunyi pada dialog ini.
Ogmios
@Ogmios maaf kemudian sobat, saya tidak dapat memikirkan hal lain yang dapat Anda lakukan untuk memperbaikinya. Anda mungkin harus mencoba solusi lain untuk melihat apakah solusi tersebut lebih baik untuk Anda. Cheers
Dheeraj Bhaskar
Meskipun PowerShell bukanlah pihak ketiga, ini bukanlah program stok, dan Anda semacam menulis program pihak ketiga untuk mencapai tujuan.
undrline
13

Saya menggunakan program nirsoft (misalnya nircmdc) dan sysinternals (misalnya psexec) sepanjang waktu. Mereka sangat membantu.

Tetapi jika Anda tidak ingin, atau tidak bisa, menggunakan program pihak ke-3, inilah cara lain, murni Windows.

Jawaban singkat : Anda dapat sementara membuat tugas terjadwal dengan hak istimewa yang kemudian dapat Anda panggil nanti saat tidak diangkat.

Jawaban menengah : sementara ditinggikan buat tugas dengan (tapi saya lebih suka GUI penjadwal tugas):

schtasks /create /sc once /tn cmd_elev /tr cmd /rl highest /st 00:00

Kemudian nanti, tidak perlu ketinggian, panggil dengan

schtasks /run /tn cmd_elev

Jawaban panjang : Ada banyak detail yang mengganggu; lihat entri blog saya "Mulai program TANPA UAC, berguna saat sistem mulai dan dalam file batch (gunakan penjadwal tugas)"

john v kumpf
sumber
8

Berikut ini sebagai file batch akan membuka prompt perintah yang ditinggikan dengan jalur yang disetel ke direktori yang sama dengan yang ada di tempat file batch dipanggil

set OLDDIR=%CD%
powershell -Command "Start-Process cmd -ArgumentList '/K cd %OLDDIR%' -Verb RunAs "
statler
sumber
5

Cara favorit saya untuk melakukan ini adalah menggunakan PsExec.exe dari SysInternals, tersedia di http://technet.microsoft.com/en-us/sysinternals/bb897553

.\psexec.exe -accepteula -h -u "$username" -p "$password" cmd.exe

Tombol "-h" adalah yang melakukan keajaiban:

-h Jika sistem target adalah Vista atau lebih tinggi, jalankan proses dengan token elevasi akun, jika tersedia.

David Rodriguez
sumber
1
Agar ini bekerja, Anda harus mengedit properti psexec.exe dan pada tab kompatibilitas, centang "Run as Administrator". Jika tidak, Anda akan mendapatkan error: PSEXESVC tidak diinstal. Tapi psexec menyebabkan masalah dengan tombol tab di cmd.exe. Tidak dapat menggunakan tab untuk melengkapi nama folder.
Peter Quiring
Tidak yakin di lingkungan mana Anda mencoba tetapi saya tidak perlu mengubah pengaturan "Jalankan sebagai Administrator" (apakah Anda mencoba menjalankan cmd.exe di komputer jarak jauh dari Anda?). Juga tidak ada masalah dengan tombol tab, saya berhasil menyelesaikan nama file dan folder (setidaknya diuji pada Win8.1 dan Win10, berjalan dari baris perintah cmd dan PowerShell)
David Rodriguez
Saya menggunakan Win10 dan menjalankannya secara lokal. Tidak yakin mengapa itu terjadi pada saya dan bukan Anda. Saya berhasil mendapatkan nircmd dan itu tidak menyebabkan masalah tab.
Peter Quiring
Saya juga memperhatikan bahwa seseorang tidak dapat melengkapi otomatis dengan tombol tab, tetapi setidaknya ini akan membuka prompt cmd yang ditinggikan dalam konteks pengguna lain, yang tampaknya tidak dicapai metode sebelumnya ketika saya mencoba. Bendera '-h' bagus (windows 10), bekerja dengan baik.
pengguna1840734
4

Buat file batch menyimpan kredensial akun administrator sebenarnya dengan menggunakan /savecredsakelar. Ini akan meminta kredensial pertama kali dan kemudian menyimpan kata sandi terenkripsi di pengelola kredensial. Kemudian untuk semua waktu berikutnya, batch yang dijalankan akan dijalankan sebagai admin penuh tetapi tidak meminta kredensial karena disimpan dengan terenkripsi di pengelola kredensial dan pengguna akhir tidak bisa mendapatkan kata sandi. Perintah berikut akan membuka CMD yang ditinggikan dengan hak administrator penuh dan hanya akan meminta kata sandi untuk pertama kalinya:

START c:\Windows\System32\runas.exe /user:Administrator /savecred cmd.exe
Stefan Gadecki
sumber
3

Sementara kedua solusi yang diberikan oleh pekerjaan Dheeraj Bhaskar, sayangnya mereka akan menghasilkan UAC dialog muncul di atas (z-order-bijaksana) tetapi tidak mendapatkan fokus (jendela terfokus adalah pemanggil cmd / PowerShell jendela), sehingga saya baik perlu ambil mouse dan klik "ya", atau untuk memilih jendela UAC menggunakan Alt + Shift + Tab. (Diuji pada Win10x64 v1607 build14393.447; UAC = "[...] jangan redupkan [...]" .)

Solusi berikut agak canggung karena menggunakan dua file, tetapi tetap mempertahankan urutan fokus yang benar, jadi tidak diperlukan tindakan mouse / keyboard tambahan (selain mengonfirmasi dialog UAC: Alt + Y ).

  1. cmdadm.lnk (properti pintasan / Lanjutan ... / Jalankan sebagai administrator = AKTIF) %SystemRoot%\System32\cmd.exe /k "cd /d"
  2. su.bat @start cmdadm.lnk %cd%

Jalankan dengan su.

Ogmios
sumber
Sayangnya saya tidak dapat mereproduksi ini. Setiap kali saya menggunakan salah satu solusi saya. Perintah UAC saya terfokus dan di atas
Dheeraj Bhaskar
3

Saya telah menggunakan Elevateuntuk sementara waktu sekarang.

Itu deskripsi - This utility executes a command with UAC privilege elevation. This is useful for working inside command prompts or with batch files.

Saya menyalin bin.x86-64\elevate.exedari .zipke C:\Program Files\elevatedan menambahkan jalur itu ke saya PATH.

Kemudian GitBash saya dapat menjalankan sesuatu seperti elevate sc stop W3SVCmematikan IISlayanan.

Menjalankan perintah memberi saya UACdialog, terfokus dengan benar dengan kontrol keyboard dan setelah menerima dialog saya kembali ke shell saya.

seangwright
sumber
3

..

@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

simpan skrip ini sebagai "god.cmd" di system32 Anda atau apa pun yang diarahkan ke jalur Anda ....

jika Anda membuka cmd di e: \ mypictures \ dan mengetikkan tuhan itu akan meminta kredensial Anda dan mengembalikan Anda ke tempat yang sama sebagai administrator ...

jOte-
sumber
1
PowerShell keren tapi butuh modul ... im oldscool ... hanya butuh sistem ...
jOte-
Apakah metode / trik elevasi ini juga berfungsi untuk jalur / nama file yang panjang? Atau apakah saya seharusnya menggunakan "% ~ snx0" atau "% ~ dpsnx0"?
script'n'code
2

Mirip dengan beberapa solusi lain di atas, saya membuat elevatefile batch yang menjalankan jendela PowerShell yang ditinggikan, melewati kebijakan eksekusi untuk mengaktifkan segala sesuatu mulai dari perintah sederhana hingga file batch hingga skrip PowerShell yang kompleks. Saya sarankan untuk menempelkannya di folder C: \ Windows \ System32 Anda untuk kemudahan penggunaan.

elevatePerintah asli menjalankan tugasnya, menangkap keluaran, menutup jendela PowerShell yang muncul dan kemudian kembali, menuliskan keluaran yang ditangkap ke jendela asli.

Saya membuat dua varian, elevatepdan elevatex, yang masing-masing menjeda dan menjaga jendela PowerShell terbuka untuk lebih banyak pekerjaan.

https://github.com/jt-github/elevate

Dan jika tautan saya mati, berikut kode untuk file batch elevate asli:

@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
)
Shadow Lynx
sumber
0

Dapat menggunakan variabel lingkungan sementara untuk digunakan dengan pintasan yang ditinggikan (

start.cmd

setx valueName_betterSpecificForEachCase %~dp0
"%~dp0ascladm.lnk"

ascladm.lnk (pintasan)

_ properties\advanced\"run as administrator"=yes

(untuk membuat perubahan jalur, Anda harus membuat sementara env.Variable)

_ properties\target="%valueName_betterSpecificForEachCase%\ascladm.cmd"

_ properties\"start in"="%valueName_betterSpecificForEachCase%"

ascladm.cmd

setx valueName_betterSpecificForEachCase=
reg delete HKEY_CURRENT_USER\Environment /F /V valueName_betterSpecificForEachCase
"%~dp0fileName_targetedCmd.cmd"

) (targetCmd dijalankan di jendela cmd yang ditinggikan)

Meskipun ini adalah 3 file, Anda dapat menempatkan semuanya (termasuk targetCmd) di beberapa subfolder (jangan lupa untuk menambahkan folderName ke tambalan) dan mengganti nama "start.cmd" menjadi satu nama yang ditargetkan

Bagi saya ini terlihat seperti cara paling asli untuk melakukan ini, sementara cmd tidak memiliki perintah yang diperlukan

ilia
sumber
saya telah membaca semua solusi di atas dan memahaminya. Saya tidak mengerti langkah Anda. saya memilih solusi dengan pro dan kontra terbaik.
Dzmitry Lahoda
0

Saya tidak yakin alat ExecElevated.exe (13KB) akan melakukan pekerjaan itu .... tetapi mungkin. Atau setidaknya berguna untuk orang lain dengan kebutuhan serupa yang datang ke halaman ini seperti yang saya lakukan (tetapi saya tidak menemukan solusinya jadi saya akhirnya membuat alat itu sendiri di .Net).

Ini akan menjalankan aplikasi dengan token yang ditinggikan (dalam mode admin). Tetapi Anda akan mendapatkan dialog UAC untuk mengonfirmasi! (mungkin tidak jika UAC telah dinonaktifkan, belum mengujinya).

Dan alat pemanggil akun juga harus memiliki admin. hak tentu saja.

Contoh penggunaan:

ExecuteElevated.exe "C:\Utility\regjump.exe HKCU\Software\Classes\.pdf"
MrCalvin
sumber
2
Saya suka jawaban dengan "Ini mungkin berhasil belum diuji", dan tentu saja jawaban dengan "tidak yakin" ....
Giridhar Karnik
1
link rusak.
Dzmitry Lahoda
Tautan dibangun kembali, maaf untuk itu
MrCalvin
0

Metode Dheeraj Bhaskar dengan Powershell memiliki ruang yang hilang di dalamnya, setidaknya untuk inkarnasi Windows 10 dari Powershell.

Baris perintah di dalam sudo.bat-nya harus

powershell.exe -Command "Start-Process cmd \"/k cd /d %cd% \" -Verb RunAs"

Perhatikan spasi ekstra setelah% cd%

;) Frode

Frode Severin Hatlevik
sumber
0

Berikut adalah cara untuk berintegrasi dengan explorer. Ini akan memunculkan item menu tambahan ketika Anda mengklik kanan di folder mana pun dalam Windows Explorer:

Integrasi Windows Explorer

Berikut langkah-langkahnya:

  1. Buat kunci ini: \ HKEY_CLASSES_ROOT \ Folder \ shell \ dosherewithadmin
  2. Ubah nilai Default-nya menjadi apa pun yang Anda inginkan untuk ditampilkan sebagai teks item menu. Contoh "DOS Shell sebagai Admin"
  3. Buat ini kunci lain: \ HKEY_CLASSES_ROOT \ Folder \ shell \ dosherewithadmin \ command
  4. Ubah nilai defaultnya menjadi ini, ipsis litteris: powershell.exe -Command "Start-Process -Verb RunAs 'cmd.exe' -Args '/ k pushd"% 1 "'"
  5. Selesai. Sekarang klik kanan di folder mana saja dan Anda akan melihat item Anda di sana di dalam item lainnya.

* Gunakan pushd sebagai ganti cd untuk memungkinkannya bekerja di drive mana pun. :-)

rribas
sumber
-1

Anda dapat menggunakan sintaks berikut, saya memiliki pertanyaan yang sama dan tidak berpikir skrip harus diperlukan.

runas / profile / user: domain \ username cmd

Ini berhasil untuk saya, mungkin berbeda di jaringan Anda.

Sean Golash
sumber
-1

Cukup gunakan perintah: runas / noprofile / user: administrator cmd

Thủy Chu
sumber
-2

Saya melakukannya dengan mudah dengan menggunakan perintah berikut di cmd

runas / netonly / user: Administrator \ Administrator cmd

setelah mengetik perintah ini, Anda harus memasukkan kata sandi Administrator Anda (jika Anda tidak tahu kata sandi Administrator Anda biarkan kosong dan tekan Enter atau ketik sesuatu, bekerja untuk saya) ..

Harish Regada
sumber
tidak membantu saya
Dzmitry Lahoda
@ DzmitryLahoda dapatkah Anda menjelaskan kepada saya kesalahan yang Anda dapatkan?
Harish Regada
-2

Tekan tombol Windows + X dan sekarang Anda dapat memilih Powershell atau Command Prompt dengan hak admin. Berfungsi jika Anda adalah admin. Fungsi tersebut tidak dapat digunakan jika sistem tersebut bukan milik Anda.

Tom
sumber
-5

Ada beberapa cara untuk membuka cmd yang ditinggikan, tetapi hanya metode Anda yang berfungsi dari prompt perintah standar. Anda hanya perlu usertidak username:

runas /user:machinename\adminuser cmd

Lihat bantuan yang relevan dari komunitas Microsoft .

Matt
sumber
4
Ini tidak sama dengan menjalankan perintah yang ditinggikan, karena ketika saya membuka jendela cmd yang ditinggikan dan saya mengetik "whoami", hasilnya akan sama seperti jendela yang tidak ditinggikan. Ketika saya menjalankan "whoami / all" dalam kedua kasus tersebut, saya dapat melihat perbedaan dalam hal izin untuk pengguna yang sama.
Constantino Cronemberger
-5

Saya menggunakan runas /user:domainuser@domain cmdyang membuka prompt yang ditinggikan dengan sukses.

JasonC
sumber
Ini membutuhkan kredensial pengguna lain. Jika Anda sudah menjadi Administrator dan ingin menjalankan dengan hak istimewa yang lebih tinggi seperti saat Anda mengklik kanan aplikasi dan memilih jalankan sebagai administrator dan tidak ada kata sandi yang diminta, hanya dialog konfirmasi, maka Anda memerlukan sesuatu yang lain. Saya datang ke sini mencari jawaban itu tetapi sepertinya tidak ada di sini.
Paul-Sebastian Manole