Pada sistem *nix, anda bisa mendapatkan root shell seperti:
$ su # or 'sudo -s'
#
Root shell adalah melahirkan di dalam terminal yang sama.
I'm mencoba untuk menemukan sesuatu yang tidak serupa, di tempat elevasi pada Jendela Command Prompt. Dengan kata lain, tidak harus membuka jendela baru atau tampilan UAC prompt. Sejauh ini saya've telah mampu membuat tugas terjadwal yang melewati UAC, tapi tinggi jendela Command Prompt tidak melahirkan di tempat.
Apakah ada perintah serupa untuk Windows yang tidak di-tempat elevasi tanpa pemijahan jendela baru?
TL;DR - Satu-satunya pilihan adalah untuk bertelur proses lain. (Yang baru cmd.exe
.) Dalam kasus Command Prompt, mulai contoh baru dengan token akses yang lebih tinggi permissions akan selalu menghasilkan sebuah jendela baru yang sedang dibuat.
Ketika seorang pengguna dengan hak administratif log ke mesin Windows dengan User Account Control (UAC), dua akses token yang dibuat:
Pada waktu proses (mis. CMD.EXE
) dibuat, hal ini diberikan salah satu dari dua [akses token][2]. Jika proses ini berjalan "tinggi" sebagai Administrator, tanpa filter akses token yang digunakan. Jika proses ini tidak diberikan hak admin, disaring, pengguna standar token digunakan.
Setelah proses yang telah dibuat itu tidak mungkin untuk menggantikan akses token.1 Di MSDN ini Aplikasi Keamanan untuk Windows Desktop thread, sebuah poster mengidentifikasi dirinya sebagai anggota dari Windows Kernel Tim menyatakan:
kernel NT tidak pernah dimaksudkan untuk memungkinkan token beralih setelah proses mulai berjalan. Hal ini karena menangani, dll. mungkin telah dibuka dalam konteks keamanan, inflight operasi dapat menggunakan tidak konsisten konteks keamanan, dll. Seperti itu, biasanya tidak masuk akal untuk mengalihkan proses' token setelah itu telah dimulai eksekusi. Namun, ini tidak ditegakkan sampai Vista. [penekanan dari saya] (Sumber terima kasih untuk @Ben N)
Catatan: User Account Control adalah diperkenalkan dengan rilis Windows Vista.
Ini Super User jawaban mengutip dua sumber tambahan mengkonfirmasikan sama:
Kode hanya dapat meningkat pada tingkat proses ketika startup, yang berarti bahwa proses yang berjalan tidak dapat ditinggikan. Dalam rangka untuk meningkatkan aplikasi yang sudah ada, sebuah instance baru dari proses aplikasi harus dibuat...
Program dapat't akan meningkat setelah mereka've sudah diluncurkan...
Oleh karena itu's tidak mungkin untuk mengangkat Command Prompt atau proses lain di tempat. Satu-satunya pilihan adalah untuk bertelur proses lain dengan akses token (yang dapat menjadi contoh lain dari proses yang asli jika diinginkan). Dalam kasus Command Prompt, mulai contoh baru dengan token akses yang lebih tinggi permissions akan selalu menghasilkan sebuah jendela baru yang sedang dibuat, dan jika UAC prompt diaktifkan pada sistem, mereka akan dipicu juga.
1Anda dapat mengatur hak akses yang sudah ada token dengan AdjustTokenPrivileges fungsi, tapi [menurut MSDN][10]:
AdjustTokenPrivileges fungsi tidak menambah hak akses token. Hal ini hanya dapat mengaktifkan atau menonaktifkan token's ada hak-hak istimewa.
[2]: https://msdn.microsoft.com/en-us/library/windows/desktop/aa374909(v=vs. 85).aspx
[10]: https://msdn.microsoft.com/en-us/library/windows/desktop/aa375202(v=vs. 85).aspx
Sementara saya antusias pengguna TCC-LE
, ada solusi yang tidak memerlukan program-program baru:-
cmd
sebagai administrator.%SystemRoot%\system32\
- jika tidak, cd
di sana.copy cmd.exe cmdadmin.exe
(atau nama apapun yang anda pilih, seperti su.exe
).cmdadmin.exe
.Sekarang cmdadmin
adalah su
atau sudo
: anda dapat memulai tanpa parameter untuk memberikan anda sebuah shell dengan hak akses administratif, atau anda dapat menjalankannya dengan /c
untuk mengeksekusi satu perintah dalam mode ini. Tergantung pada kebijakan anda, anda mungkin atau mungkin tidak akan diminta untuk konfirmasi.
Catatan bahwa ini akan selalu terbuka jendela baru (seperti halnya TCC solusi start /tinggi ...
): untuk aplikasi GUI ini adalah diharapkan, tapi untuk program baris perintah, anda mungkin ingin menggunakan /k
bukan /c
, untuk memberikan anda kesempatan untuk melihat output; atau anda bisa berjalan melalui sebuah batch file (sudo.cmd
mungkin?) yang merangkai & pause
untuk akhir anda jalankan string.
Dalam kedua kasus itu's tidak cukup sama seperti su
atau sudo
, tapi itu's terdekat anda'll mendapatkan. Dengan pengaturan windows layout secara manual, jendela baru dapat dibuat langsung di bawah dan berbatasan asli.
Apakah ada perintah yang dapat meningkatkan Command Prompt di tempat?
Ada yang lebih nyaman dengan cara:
powershell -Command "Start-Process 'cmd.exe' -Verb runAs"
Ada cara yang lebih baik tapi Microsoft menutup mereka. Tentu saja, anda dapat selalu menyingsingkan lengan baju anda dan menulis skrip anda sendiri setara dengan sudo
dengan source code baru saja saya berikan.
dengan kata lain, tidak harus membuka jendela baru atau tampilan UAC prompt.
Penghujatan! Membakar dia di tiang! ;) Lelucon samping, tidak ada. Ada isn't. Itu akan menjadi sebuah bug dan kerentanan keamanan. Microsoft membuat sebuah eksplisit upaya untuk memastikan bahwa peningkatan dan standar proses memiliki sedikit kesamaan mungkin.
Anak-anak cerdas yang berpikir tentang dua back-ujung (satu standar dan satu elevated) dan satu front-end grafis untuk investasi, harus membaca tentang [Sesi 0 Isolasi][1].
[1]: https://msdn.microsoft.com/en-us/library/windows/hardware/dn653293(v=vs. 85).aspx
Saya melihat pertanyaan ini dan datang dengan solusi sederhana. Ini adalah utilitas kecil yang disebut rsudo
, yang berjalan meningkat perintah biasa dari jendela CMD.
Note: UAC prompt akan datang. Menyembunyikan hal ini tidak mungkin, bahwa's hanya cara bahwa UAC telah dirancang.
Usage:
rsudo.exe "[command]"
Catatan:
Perintah yang dijalankan di jendela baru. Jika anda ingin melihat output, menjalankan rsudo.exe "berhenti && [perintah]"
Apakah ada perintah serupa untuk Windows yang tidak di-tempat elevasi tanpa pemijahan jendela baru?
Tidak ada perintah built-in. Meskipun saya belum't membuktikan bahwa, saya percaya itu karena saya telah melihat beberapa cara untuk menggunakan perangkat lunak tambahan/kode untuk mengatasi masalah ini.
dengan kata lain, tidak harus membuka jendela baru atau tampilan UAC prompt.
Lupa itu. Benar-benar melupakannya. Yang bertentangan desain UAC. Jika anda bisa mengelola itu, anda're melanggar mendasar keamanan proses. Mengharapkan solusi anda untuk istirahat dengan patch setelah Microsoft belajar dari, dan perbaikan, proses apa pun yang mungkin anda lakukan untuk mengatasi hal ini.
Solusi untuk menghindari UAC prompt adalah untuk memiliki elevasi tinggi untuk memulai dengan. UAC seharusnya't repot-repot anda jika anda're cukup resmi. Jika anda mulai dengan ketinggian yang lebih rendah (yang lebih sering dianjurkan untuk manfaat jaminan) dan kemudian mencoba untuk melakukan sesuatu yang memerlukan ketinggian yang lebih tinggi, kemudian mengharapkan UAC interaksi.
Apa yang anda inginkan mungkin di Windows, karena tidak mendukung konsep ini. Anda perlu untuk memulai sebuah proses baru dengan tinggi permissions.
Saya menggunakan nircmd untuk meningkatkan proses dari commandline. Perintah anda akan nircmdc meningkatkan cmd
Yang satu ini aneh.
Anda bisa mencoba melakukan ssh ke komputer anda sendiri yang akan sama-sama menggunakan terminal yang ada, tetapi benar-benar akan menjadi yang sama sekali berbeda.
It'll bekerja, tapi itu's mungkin bukan apa yang anda inginkan.
Orang lain mungkin menemukan itu berguna sekalipun.
Mencoba JPSOFT Mengambil Perintah command prompt TCC/LE. Itu datang dalam 32 - dan versi 64-bit dan gratis kecuali anda ingin lebih banyak fungsi.
Pergi ke https://jpsoft.com/ dan klik Download dan pilih apa yang anda ingin.
TCC/LE memiliki START /DITINGGIKAN, yang dimulai program ditinggikan dengan penuh hak istimewa admin. (Windows Vista atau yang lebih baru.)