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.