Bagaimana cara membuat kode file BAT agar selalu dijalankan sebagai mode admin?


149

Saya memiliki baris ini di dalam file BAT saya:

"Example1Server.exe"

Saya ingin menjalankan ini dalam mode Administrator. Bagaimana cara memodifikasi kode kelelawar untuk menjalankan ini sebagai admin?

Apakah ini benar? Apakah saya perlu memberi tanda kutip?

runas /user:Administrator invis.vbs Example1Server.exe


Jawaban:


71

Anda menggunakan runasuntuk meluncurkan program sebagai pengguna tertentu:

runas /user:Administrator Example1Server.exe

6
@karikari: Nama seperti ini ( Example1Server.exe) tidak perlu dimasukkan ke dalam tanda kutip, tetapi dalam beberapa kasus lain (seperti spasi dalam nama :) Example1 Server.exeAnda memang membutuhkannya. Anda dapat menggunakan tanda kutip walaupun mereka tidak diperlukan.
Andriy M

18
Akun admin mungkin tidak bernama Administrator
Anders

9
@Anders: Tidak, mungkin tidak; Saya berasumsi OP dapat "menemukan pola". Ini bukan jawaban plz-beri-aku-teh-kodez: -S By the way, saya harus menambahkan OP mungkin ingin beberapa perintah yang lebih rumit seperti runas /User:abc "csript myscript.vbs", atau runas /User:abc "cmd /c start ...".
Kerrek SB

16
Saya khawatir jawaban ini bukan yang diinginkan 90% dari pengunjung, karena ini lebih sulit daripada mengklik kanan-> jalankan sebagai admin, meskipun secara teknis benar. Periksa lagi jawaban yang lain. Persis apa yang paling diinginkan.
j riv

13
Tidak, jawaban ini secara teknis salah. Berjalan sebagai administrator tidak sama dengan berjalan di bawah pengguna yang namanya adalah Administrator, dan hak istimewa berbeda. Lihat jawaban lainnya.
Alexander Gelbukh

370

Jawaban lain mengharuskan Anda memasukkan kata sandi akun Administrator. Juga, berjalan di bawah akun di Grup Administrator tidak sama dengan berjalan seperti administrator lihat: UAC di Wikipedia

Petunjuk Windows 7

Untuk menjalankan sebagai Administrator, buat pintasan untuk file kumpulan.

  1. Klik kanan file kumpulan dan klik salin
  2. Arahkan ke tempat yang Anda inginkan pintasannya
  3. Klik kanan latar belakang direktori
  4. Pilih Tempel Pintasan

Kemudian Anda dapat mengatur pintasan untuk dijalankan sebagai administrator:

  1. Klik kanan pintasan
  2. Pilih Properti
  3. Di tab Pintasan, klik Tingkat Lanjut
  4. Pilih kotak centang "Jalankan sebagai administrator"
  5. Klik OK, OK

Sekarang ketika Anda mengklik dua kali pintasan itu akan meminta Anda untuk konfirmasi UAC dan kemudian Jalankan sebagai administrator (yang seperti saya katakan di atas berbeda dari berjalan di bawah akun di Grup Administrator)

Periksa tangkapan layar di bawah ini

Tangkapan layar

Catatan: Ketika Anda melakukannya untuk Menjalankan Sebagai Administrator, direktori (jalur) saat ini tidak akan sama dengan file bat. Ini dapat menyebabkan beberapa masalah dalam banyak kasus bahwa file bat merujuk ke file relatif di sampingnya. Sebagai contoh, di Windows 7 saya dir direktori akan menjadi SYSTEM32 bukan lokasi file bat! Untuk mengatasinya , Anda harus menggunakan

cd "%~dp0"

atau lebih baik

pushd "%~dp0"

untuk memastikan skr dir berada di jalur yang sama di mana file bat berada.


8
Ah, itu memang disembunyikan (kebanyakan dari kita tidak berpikir bahwa tombol lanjutan memiliki opsi di dalamnya). Saya hampir yakin siapa pun yang memikirkan jawaban rumit lainnya tidak tahu itu. Ini adalah jawaban yang diinginkan 90% pengunjung.
j riv

1
Saya setuju. ini seharusnya jawabannya. Saya juga menambahkan tangkapan layar untuk memudahkan menemukan tombol maju
fedmich

1
Ini juga berlaku untuk Windows Server 2012 R2.
garec

3
Ini tidak berfungsi untuk saya pada Windows 10 atau Windows 7. Ketika saya mencoba menjalankan sebagai Administrator, baik dengan mengklik kanan file BAT dan "Jalankan sebagai Administrator", atau menggunakan teknik yang dijelaskan di sini, file batch berkedip terbuka selama sedetik kemudian ditutup segera tanpa perintah atau program dalam eksekusi file batch. Saya sudah mencoba menjalankan file batch yang sangat sederhana yang hanya menggemakan "Hello World" dan mereka juga gagal dengan cara ini. Ini sangat membuat frustrasi. Sejauh ini saya belum bisa menemukan solusi.
Jonathan Elkins

1
@JonathanElkins apakah Anda mencoba menambahkan jeda di akhir file batch?
Ed Greaves

32

Cukup tambahkan ini ke bagian atas file bat Anda:

set "params=%*"
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || (  echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )

Ini akan meningkat menjadi admin dan juga tetap di direktori yang benar. Diuji pada Windows 10.


1
Diuji pada Windows 7 dan berfungsi dengan baik. Tetapi bisakah Anda menjelaskan apa fungsinya? Saya tidak terbiasa dengan file bat.
Sunfloro

1
Ini membuat file VBScript dengan kode yang mengangkat Anda ke admin (jika Anda belum melakukannya), dan menjalankan file bat lagi, kali ini sebagai admin.
Baginda

1
Apa yang saya cari dengan tepat! tidak diperlukan perubahan tambahan atau file tambahan!
MSS

1
Apa itu getadmin.vbs?
Kiquenet

4
Menambahkan dua baris kode Anda ke file batch yang ada adalah solusi yang baik untuk saya. Saya juga harus menambahkan exitke akhir file batch saya atau saya akan dibiarkan di prompt. Ini mungkin karena .vbs meluncurkan prompt perintah kedua.
Ben

10

Jika Anda dapat menggunakan utilitas pihak ketiga, berikut adalah elevateutilitas baris perintah .

Ini adalah deskripsi penggunaan:

Usage: Elevate [-?|-wait|-k] prog [args]
-?    - Shows this help
-wait - Waits until prog terminates
-k    - Starts the the %COMSPEC% environment variable value and
                executes prog in it (CMD.EXE, 4NT.EXE, etc.)
prog  - The program to execute
args  - Optional command line arguments to prog

elevate.exebatu!
Sangbok Lee

8

Anda dapat menggunakan nircmd.exe 's Tinggikan perintah

Referensi Perintah NirCmd - meninggikan

elevate [Program] {Command-Line Parameters}

Hanya untuk Windows Vista / 7/2008: Jalankan program dengan hak administrator. Ketika [Program] berisi satu atau lebih karakter spasi, Anda harus menuliskannya dalam tanda kutip.

Contoh:

elevate notepad.exe 
elevate notepad.exe C:\Windows\System32\Drivers\etc\HOSTS 
elevate "c:\program files\my software\abc.exe"

PS: Saya menggunakannya pada win 10 dan berhasil


6

konversikan file batch Anda menjadi .exe dengan alat ini: http://www.battoexeconverter.com/ maka Anda dapat menjalankannya sebagai administrator


2
Ingatlah bahwa banyak anti virus sangat sensitif pada file exe yang dibuat dengan cara ini. "mengkonversi / mengenkripsi" file batch dengan cara ini, adalah cara lama yang digunakan oleh program jahat.
Hamy

Jika Anda menganalisis domain ini menggunakan Symantec - Threat Type: othermalware Threat Reason: Domain dilaporkan dan diverifikasi sebagai penyajian malware. Diidentifikasi sebagai domain atau URL berbahaya.
Sunil

Saran buruk!
Vlad

6
go get github.com/mattn/sudo

Kemudian

sudo Example1Server.exe

6

Saya rasa saya punya solusi untuk masalah kata sandi. Argumen tunggal ini benar-benar luar biasa. Ia meminta kata sandi sekali, dan kemudian tidak pernah menanyakannya lagi. Bahkan jika Anda memasukkannya ke program lain, itu tidak akan meminta kata sandi. Ini dia:

runas /user:Administrator /savecred Example1Server.exe


4
  1. Eksperimen saya menunjukkan bahwa perintah runas harus menyertakan domain pengguna admin (setidaknya itu ada di pengaturan lingkungan organisasi saya):

    runas /user:AdminDomain\AdminUserName ExampleScript.bat
    

    Jika Anda belum mengetahui domain pengguna admin, jalankan instance dari Command Prompt sebagai pengguna admin, dan masukkan perintah berikut:

    echo %userdomain%
    
  2. Jawaban yang diberikan oleh Kerrek SB dan Ed Greaves akan mengeksekusi file target di bawah pengguna admin tetapi, jika file tersebut adalah skrip Perintah (file .bat) atau skrip VB (file .vbs) yang mencoba untuk beroperasi pada login normal lingkungan pengguna (seperti mengubah entri registri), Anda mungkin tidak mendapatkan hasil yang diinginkan karena lingkungan tempat skrip sebenarnya dijalankan adalah milik pengguna admin, bukan pengguna login normal! Misalnya, jika file tersebut adalah skrip yang beroperasi pada kumpulan HKEY_CURRENT_USER registri, "pengguna saat ini" yang terpengaruh akan menjadi pengguna admin, bukan pengguna login normal.


0

Gunakan drive fisik \ path lengkap ke file batch Target Anda di Properties pintasan.

Ini tidak berfungsi di Windows 10 jika Anda menggunakan drive subst seperti yang saya coba lakukan pada awalnya ...

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.