Bagaimana cara membuka prompt perintah yang ditinggikan menggunakan baris perintah pada cmd normal?
Misalnya, saya menggunakan runas /username:admin cmd
cmd yang dibuka tetapi sepertinya tidak dinaikkan! Ada solusi?
Bagaimana cara membuka prompt perintah yang ditinggikan menggunakan baris perintah pada cmd normal?
Misalnya, saya menggunakan runas /username:admin cmd
cmd yang dibuka tetapi sepertinya tidak dinaikkan! Ada solusi?
Jawaban:
Saya mengalami masalah yang sama dan satu-satunya cara saya dapat membuka CMD sebagai administrator dari CMD adalah melakukan hal berikut:
powershell -Command "Start-Process cmd -Verb RunAs"
dan tekanEnterMenurut 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:
nircmdc elevate cmd
npm install -g windosu
(membutuhkan node.js diinstal)sudo cmd
nircmdc elevate route delete 0.0.0.0 mask 0..0.0 192.168.1.1
akhirnya berhasil. Cara lain runas /user:...
meminta kata sandi meskipun sudah menjadi admin (mode batch terbunuh).
nircmdc elevate cmd
nircmd
, untuk memilikinya bekerja seperti Linux sudo
, membuat sudo.bat
file dalam jalur Anda dengan konten ini: nircmd elevate %*
. Kemudian Anda dapat melakukannya, misalnya,sudo net stop W3SVC
windosu
:)
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"
sudo.bat
(Anda dapat mengganti sudo
dengan nama yang Anda inginkan) dengan konten berikut
powershell.exe -Command "Start-Process cmd \"/k cd /d %cd%\" -Verb RunAs"
sudo.bat
ke folder di PATH
; jika Anda tidak tahu apa artinya, cukup pindahkan file ini kec:\windows\
sudo
akan bekerja di dialog Run ( win+r) atau di address bar explorer (ini adalah bagian terbaik :))sudo.bat
(Anda dapat mengganti sudo
dengan nama yang Anda inginkan) dengan konten berikut
nircmdc elevate cmd /k "cd /d %cd%"
nircmdc.exe
dan sudo.bat
ke folder di PATH
; jika Anda tidak tahu apa artinya, cukup pindahkan file ini kec:\windows\
sudo
akan bekerja di dialog Run ( win+r) atau di address bar explorer (ini adalah bagian terbaik :))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)"
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.
Buat file batch menyimpan kredensial akun administrator sebenarnya dengan menggunakan /savecred
sakelar. 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
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 ).
%SystemRoot%\System32\cmd.exe /k "cd /d"
@start cmdadm.lnk %cd%
Jalankan dengan su
.
Saya telah menggunakan Elevate
untuk 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.exe
dari .zip
ke C:\Program Files\elevate
dan menambahkan jalur itu ke saya PATH
.
Kemudian GitBash saya dapat menjalankan sesuatu seperti elevate sc stop W3SVC
mematikan IIS
layanan.
Menjalankan perintah memberi saya UAC
dialog, terfokus dengan benar dengan kontrol keyboard dan setelah menerima dialog saya kembali ke shell saya.
..
@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 ...
Mirip dengan beberapa solusi lain di atas, saya membuat elevate
file 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.
elevate
Perintah asli menjalankan tugasnya, menangkap keluaran, menutup jendela PowerShell yang muncul dan kemudian kembali, menuliskan keluaran yang ditangkap ke jendela asli.
Saya membuat dua varian, elevatep
dan 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
)
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
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"
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
Berikut adalah cara untuk berintegrasi dengan explorer. Ini akan memunculkan item menu tambahan ketika Anda mengklik kanan di folder mana pun dalam Windows Explorer:
Berikut langkah-langkahnya:
* Gunakan pushd sebagai ganti cd untuk memungkinkannya bekerja di drive mana pun. :-)
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.
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) ..
Ada beberapa cara untuk membuka cmd yang ditinggikan, tetapi hanya metode Anda yang berfungsi dari prompt perintah standar. Anda hanya perlu user
tidak username
:
runas /user:machinename\adminuser cmd
Lihat bantuan yang relevan dari komunitas Microsoft .
Saya menggunakan runas /user:domainuser@domain cmd
yang membuka prompt yang ditinggikan dengan sukses.