Cara menjalankan program dari baris perintah dengan hak tinggi


44

Apakah ada cara untuk menjalankan program atau perintah dengan hak tinggi ketika saya sudah di baris perintah non-tinggi?

Tindakan yang persis sama yang akan dilakukan ketika saya mengklik pintasan program dan memilih Run as administrator .

The runas perintah mungkin bukan solusi - itu meminta password, tapi aku hanya ingin UAC dialog.

Jawaban:


14

Sepertinya utilitas ini - Hidden Start - akan melakukan apa yang Anda inginkan jika Anda menggunakan / uac switch. Berikut contoh perintah:

hstart /UAC "notepad.exe"

Ini akan memunculkan dialog UAC daripada meminta kata sandi seperti runas.

masukkan deskripsi gambar di sini


2
Peringatan: utilitas kecil itu adalah $ 20. Bagi mereka yang memiliki kantong kecil, gunakan RunAdmin sebagai gantinya :)
WeGoToMars

Ini tidak muncul pada Windows 10
akan

50

Ada cara untuk melakukan ini di PowerShell:

PS> Start-Process powershell -Verb runAs

19
Tampaknya bekerja dengan baik. Dari baris perintah, Anda dapat melakukannya misalnyapowershell -Command "Start-Process 'C:\program.exe' -Verb runAs"
marsze

7
Ini harus ditandai sebagai IMO jawaban benar / terbaik - ini berfungsi tanpa utilitas pihak ke-3.
crimbo

5
Membangun dari @marsze - Fwiw, argumen dalam kasus paling sederhana masuk ke nilai kuotasi tunggal mereka sendiri, misalnya powershell -Command "Start-Process 'gvim' 'c:\windows\system32\drivers\etc\hosts' -Verb runAs". Terima kasih!
ruffin

Bagaimana saya bisa mem-pipe output dari command prompt yang ditinggikan ke dalam skrip yang sedang saya jalankan?
kendaraan roda

@ winder, saya hampir yakin Anda tidak bisa melakukan itu, tetapi Anda dapat mengembalikan kode keluar:$p = Start-Process powershell -Verb runAs -ArgumentList "-Command ``"& { ``$Host.SetShouldExit(123) }``"" -PassThru; $p.ExitCode
Rustam

6

Membangun Rustam 's jawaban , Anda dapat:

  • Buat su.batfile batch di suatu tempat di% PATH% default Anda, dengan satu-baris berikut:@powershell start -verb runas %*
  • Tambahkan fungsi ini ke profil $ PowerShell Anda :function su {start -verb runas @args}

Sekarang Anda dapat menerbitkan su <command> [parameters]di kedua shell!


2

RunAdmin adalah utilitas kecil (150Kb) yang memungkinkan Anda menjalankan program dari baris perintah dengan hak tinggi (ini akan menampilkan UAC). Dan kebalikan dari Hidden Start adalah freeare.


2

Ini bekerja untuk saya di semua platform, termasuk Windows 10. Kebutuhan saya sederhana, mungkin Anda dapat menyesuaikan pendekatan jika Anda membutuhkan daya .

Saya datang dengan skrip kecil bernama, sudo.cmddinamai untuk perintah sudo Linux. Itu bekerja dengan cukup baik menurutnya. Saya telah menguraikan persyaratan, langkah-langkah yang harus diikuti dan skrip berada di dekat bagian bawah dengan sebuah contoh. Pertama, kata peringatan.

PERINGATAN : Perintah ini berjalan di direktori Sistem windows secara default. Anda akan ingincdke tempat yang aman dulu.

persyaratan :

  • Jalankan perintah dengan Administrator privilege dari windows .CMD
    atau cmd-shell.
  • memerlukan pemeriksaan hak Windows normal pada perintah
    • Dengan kata lain perintah TIDAK akan berfungsi kecuali saya sudah masuk dengan akun istimewa.
  • Jalankan perintah dengan izin Admin dan lanjutkan ketika dipanggil di dalam skrip. Jadi tunggu perintahnya selesai.
  • Sederhana saja agar selalu berhasil
  • Tidak perlu memasukkan kata sandi setiap kali, jika saya sudah masuk.
    • Metode yang lebih baik adalah jika saya dapat memasukkan kata sandi seperti halnya sudoperintah sebenarnya di Linux.

solusi :

  1. Buat skrip perintah untuk mengeksekusi semua argumen yang diteruskan, sudo.cmd
  2. Membuat Windows pintas untuk perintah nama script itu: sudo.lnk.
  3. Letakkan jalan sudopintas di PATH windows Anda sehingga bisa dilihat.
  4. Edit properti Start in:jalan pintas, buat jalur kosong.
  5. Klik tombol [ Advanced] - CentangRun as Administrator
  6. Aktifkan pintasan di jalur windows Anda, gunakan variabel lingkungan PATHEXT, yaitu.
d:> echo %PATHEXT%
    .lnk;.EXE;.CMD;.BAT;.COM

Saat Anda mengetik sudo dirpada baris perintah, Windows akan menampilkan

User Account Control

Do you want to allow this app to make changes to this device?

  [YES]  [NO]

Munculan kontrol akses. Jika Anda mengklik "[ NO]" tidak akan terjadi apa-apa. Windows akan menampilkan pesan " Access is denied.".

Ketika Anda mengklik "[ YES]" maka perintah direktori dijalankan pada hak istimewa yang ditinggikan. Tentu saja Anda mungkin menginginkan sesuatu yang lebih menarik seperti berhenti atau meminta layanan:

 sudo sc query SDRSVC

SDRSVC adalah nama layanan untuk "Layanan Pencadangan Windows", ini menunjukkan yang berikut di jendela Cmd terpisah:

  [sudo]

   administrator
  ---------------

  sc query SDRSVC

SERVICE_NAME: SDRSVC
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

  [done]

Press any key to continue . . .

The sudo.cmdScript itu sendiri sangat dasar. Seperti yang saya katakan, kebutuhan saya sederhana. Saya hanya ingin berhenti dan memulai layanan sementara saya menggunakan kode untuk pengujian.

sudo.cmd:

 @echo off
 @rem    sudo.cmd
         cd /d %temp%
 @echo.
 @echo.   administrator
 @echo.  ---------------
         cd 
 @echo.
 @rem  _________________________________________________
 @rem      -- Print usage . . .
        @if    [""]      ==["%~1"]   goto USAGE
        @if /i ["--HELP"]==["%~1"]   goto USAGE
 @rem  _________________________________________________
 @rem
 @echo.  %*
 @rem
         %*
 @rem
         set EXIT_STATUS=%ERRORLEVEL%
 @rem  -- -- -- -- --  
 @echo.
 @echo.  [done]
 @rem  ______________________________________________________
 :Exit
 @echo.
 @pause
  exit /b  %EXIT_STATUS%
 @rem  ______________________________________________________
 :USAGE
 @echo.
 @echo  ^Usage:
 @echo.    sudo ^<complete command line^>
 @echo.
 @echo.  Attempts to rune the: ^<complete command line^>
 @echo.  under Administrator priviliges.  Relies on Windows 
 @echo.  prompt for elevated privileges.
 @rem  ______________________________________________________
 @goto Exit

The pauseperintah menunggu Anda untuk meninjau hasil. Jika Anda mengambil pausejendela administrasi ditutup dan Anda tidak tahu apakah perintah itu berfungsi atau tidak. Dari ERRORLEVELperintah dikembalikan juga.


2

Ini berfungsi untuk Windows 10, belum diuji dengan versi Windows lainnya.

Contoh untuk membuka notepad dengan hak administrator dari cmd.exe yang memulai PowerShell yang meminta izin tinggi.

C:\>start powershell -command "&{start-process -filepath notepad -verb RunAs}"

Ini akan memberi Anda kotak dialog UAC (jika diaktifkan) dengan [Ya] [Tidak], atau akan menanyakan kata sandi administrator.

Contoh lain untuk membuka file hosts dengan notepad adalah:

C:\>start powershell -command "&{start-process -filepath notepad 'C:\Windows\System32\drivers\etc\hosts' -verb RunAs}"

Informasi lebih lanjut: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-6


Argumen untuk dieksekusi harus menjadi -ArgumentListparameter, bukan hanya parameter tambahan untuk memulai proses.
Appleshell

0

Lihatlah Mulai ++ - ia memiliki fungsi ini bersama dengan banyak hal berguna lainnya. Untuk menjalankan dengan UAC prompt, cukup gunakan sudonama program Anda pada baris perintah seperti yang ditunjukkan di sini:

teks alternatif

Berikut adalah beberapa fitur lain (Anda juga dapat menambahkan sendiri):

teks alternatif

teks alternatif


Terlihat juga bagus tapi saya sudah menggunakan FARR yang memiliki fungsi yang sama dengan Start ++ dan banyak lagi (tentu saja kecuali sudo).
Lukas Cenovsky

2
Tautan tersebut mengatakan Selamat datang di: brandontools.com. Halaman Web ini diparkir GRATIS. Ingin membeli brandontools.com?
xmojmr

1
seperti @xmojmr katakan, situs itu sudah mati. Jika Anda tahu lokasi baru (saya tidak menemukannya begitu cepat), Anda harus memperbarui tautan dalam jawabannya.
Abel

-1

Anda bisa mengatur __COMPAT_LAYER=RunAsAdmin. Maka perintah akan dijalankan secara terpisah ditinggikan cmd.

Contoh .bat:

rem Run next command elevated to Admin.
set __COMPAT_LAYER=RunAsAdmin
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\{35378EAC-683F-11D2-A89A-00C04FBBCFA2}" /t REG_DWORD /v "NoBackgroundPolicy" /d "1"
rem Disable elevation
set __COMPAT_LAYER=
rem continue non elevated
reg add "HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Internet Explorer\Main" /t REG_SZ /v "Start Page" /d "https://www.google.com" /f

Semua opsi Mode Kompatibilitas tercantum dalam Alat Kompatibilitas Aplikasi MS.


File batch ini rusak parah. Anda tidak dapat menggunakan ;sebagai pembatas komentar. "File batch tidak mengenali titik koma dan umumnya akan menyebabkan pesan kesalahan tentang perintah yang buruk."
DavidPostill
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.