Làm cách nào để mã tệp BAT để luôn chạy ở chế độ quản trị viên?


149

Tôi có dòng này trong tệp BAT của mình:

"Example1Server.exe"

Tôi muốn thực hiện điều này trong chế độ Quản trị viên. Làm thế nào để sửa đổi mã bat để chạy này với tư cách quản trị viên?

Điều này có đúng không? Tôi có cần đặt dấu ngoặc kép không?

runas /user:Administrator invis.vbs Example1Server.exe


Câu trả lời:


71

Bạn sử dụng runasđể khởi chạy một chương trình như một người dùng cụ thể:

runas /user:Administrator Example1Server.exe

6
@karikari: Một tên như thế này ( Example1Server.exe) không cần phải được đặt trong dấu ngoặc kép, nhưng trong một số trường hợp khác (như khoảng trắng trong tên Example1 Server.exe:) bạn sẽ thực sự cần chúng. Bạn có thể sử dụng dấu ngoặc kép ngay cả khi chúng không cần thiết.
Andriy M

18
Tài khoản quản trị viên có thể không được đặt tên Quản trị viên
Anders

9
@Anders: Không, nó có thể không; Tôi cho rằng OP có thể "phát hiện ra mô hình". Đây không phải là câu trả lời plz-give-me-teh-codez: -S Nhân tiện, tôi nên thêm OP có thể muốn một số lệnh phức tạp hơn như runas /User:abc "csript myscript.vbs", hoặc runas /User:abc "cmd /c start ...".
Kerrek SB

16
Tôi sợ câu trả lời này không phải là điều mà 90% khách truy cập muốn, vì nó thậm chí còn khó hơn nhấp chuột phải -> chạy với tư cách quản trị viên, ngay cả khi nó đúng về mặt kỹ thuật. Kiểm tra lại câu trả lời khác. Đó chính xác là những gì hầu hết sẽ muốn.
j đối thủ

13
Không, câu trả lời này là không chính xác về mặt kỹ thuật. Chạy với tư cách quản trị viên không giống như chạy dưới người dùng có tên tình cờ là Quản trị viên và các đặc quyền khác nhau. Xem câu trả lời khác.
Alexander Gelbukh

370

Câu trả lời khác yêu cầu bạn nhập mật khẩu tài khoản Quản trị viên. Ngoài ra, chạy dưới một tài khoản trong Nhóm quản trị viên không giống như chạy như quản trị viên thấy: UAC trên Wikipedia

Hướng dẫn Windows 7

Để chạy với tư cách Quản trị viên, hãy tạo lối tắt cho tệp bó.

  1. Nhấp chuột phải vào tệp bó và nhấp vào sao chép
  2. Điều hướng đến nơi bạn muốn phím tắt
  3. Nhấp chuột phải vào nền của thư mục
  4. Chọn Dán phím tắt

Sau đó, bạn có thể đặt lối tắt để chạy với tư cách quản trị viên:

  1. Nhấp chuột phải vào phím tắt
  2. Chọn thuộc tính
  3. Trong tab Phím tắt, bấm Nâng cao
  4. Chọn hộp kiểm "Chạy với tư cách quản trị viên"
  5. Nhấn vào OK

Bây giờ khi bạn nhấp đúp vào phím tắt, nó sẽ nhắc bạn xác nhận UAC và sau đó Chạy với tư cách quản trị viên (như tôi đã nói ở trên khác với chạy dưới một tài khoản trong Nhóm quản trị viên)

Kiểm tra ảnh chụp màn hình bên dưới

Ảnh chụp màn hình

Lưu ý: Khi bạn làm như vậy để Chạy với tư cách Quản trị viên, thư mục hiện tại (đường dẫn) sẽ không giống với tệp bat. Điều này có thể gây ra một số vấn đề trong nhiều trường hợp tệp bat đề cập đến các tệp tương đối bên cạnh nó. Ví dụ: trong Windows 7 của tôi, thư mục cur sẽ là HỆ THỐNG32 thay vì vị trí tệp bat! Để khắc phục nó , bạn nên sử dụng

cd "%~dp0"

hoặc tốt hơn

pushd "%~dp0"

để đảm bảo cur dir nằm ở cùng một đường dẫn trong đó tập tin bat.


8
Ah, điều đó thực sự bị ẩn (hầu hết chúng ta không nghĩ rằng nút nâng cao đó có tùy chọn đó trong đó). Tôi gần như chắc chắn bất cứ ai nghĩ về câu trả lời phức tạp khác đều không biết điều đó. Đây là câu trả lời 90% + của khách truy cập sẽ muốn.
j đối thủ

1
Tôi đồng ý. đây sẽ là câu trả lời Tôi cũng đã thêm một ảnh chụp màn hình để dễ dàng tìm thấy nút nâng cao hơn
fedmich 10/2/2015

1
Điều này cũng áp dụng cho Windows Server 2012 R2.
garec

3
Điều này không hoạt động với tôi trên Windows 10 hoặc Windows 7. Khi tôi cố chạy với tư cách Quản trị viên, bằng cách nhấp chuột phải vào tệp BAT và "Chạy với tư cách Quản trị viên" hoặc sử dụng kỹ thuật được mô tả ở đây, tệp bó sẽ mở trong một giây sau đó đóng ngay lập tức mà không có lệnh hoặc chương trình nào trong việc thực thi tệp bó. Tôi đã thử chạy các tệp bó rất đơn giản chỉ lặp lại "Hello World" và chúng cũng thất bại theo cách này. Điều này rất bực bội. Tôi có, cho đến nay, không thể tìm thấy một giải pháp.
Jonathan Elkins

1
@JonathanElkins bạn đã thử thêm tạm dừng ở cuối tệp bó chưa?
Ed Greaves

32

Chỉ cần thêm phần này vào đầu tập tin bat của bạn:

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 )

Nó sẽ nâng lên thành quản trị viên và cũng ở trong thư mục chính xác. Đã thử nghiệm trên Windows 10.


1
Đã thử nghiệm trong Windows 7 và hoạt động rất tốt. Nhưng bạn có thể giải thích những gì nó làm? Tôi không quen thuộc với các tập tin bat.
Sunfloro

1
Nó tạo một tệp VBScript với mã nâng bạn lên quản trị viên (nếu bạn chưa có) và chạy lại tệp bat, lần này là quản trị viên.
Sire

1
Những gì tôi chính xác tìm kiếm! không có thay đổi bổ sung hoặc yêu cầu thêm tập tin!
MSS

1
getadmin.vbs là gì?
Kiquenet

4
Thêm hai dòng mã của bạn vào tệp bó hiện tại của tôi là một giải pháp tốt cho tôi. Tôi cũng phải thêm exitvào cuối tập tin lô của mình nếu không tôi sẽ bị bỏ lại tại dấu nhắc. Điều này có thể là do .vbs khởi chạy một dấu nhắc lệnh thứ hai.
Ben

10

Nếu bạn có thể sử dụng tiện ích của bên thứ ba, đây là elevatetiện ích dòng lệnh .

Đây là mô tả sử dụng:

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.exeđá!
Sangbok Lee

8

Bạn có thể sử dụng lệnh nâng cao của nircmd.exe

Tham chiếu lệnh NirCmd - nâng cao

elevate [Program] {Command-Line Parameters}

Chỉ dành cho Windows Vista / 7/2008: Chạy chương trình có quyền quản trị viên. Khi [Chương trình] chứa một hoặc nhiều ký tự khoảng trắng, bạn phải đặt nó trong dấu ngoặc kép.

Ví dụ:

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

PS: Tôi sử dụng nó trên win 10 và nó hoạt động


6

chuyển đổi tệp bó của bạn thành .exe bằng công cụ này: http://www.battoexeconverter.com/ sau đó bạn có thể chạy nó với tư cách quản trị viên


2
Hãy nhớ rằng rất nhiều phần mềm chống vi-rút siêu nhạy cảm trên các tệp exe được xây dựng theo cách này. "Chuyển đổi / mã hóa" các tệp bó theo cách này, là một cách cũ được sử dụng bởi các chương trình độc hại.
Hamy

Nếu bạn phân tích tên miền này bằng Symantec - Loại đe dọa: othermalware Lý do đe dọa: Tên miền được báo cáo và xác minh là phục vụ phần mềm độc hại. Được xác định là tên miền độc hại hoặc URL.
Sunil

Đề nghị xấu!
Vlad

6
go get github.com/mattn/sudo

Sau đó

sudo Example1Server.exe

6

Tôi nghĩ rằng tôi có một giải pháp cho vấn đề mật khẩu. Lập luận duy nhất này thực sự tuyệt vời. Nó yêu cầu mật khẩu một lần và hơn bao giờ yêu cầu lại mật khẩu. Ngay cả khi bạn đặt nó vào một chương trình khác, nó sẽ không yêu cầu mật khẩu. Đây là:

runas /user:Administrator /savecred Example1Server.exe


4
  1. Thử nghiệm của tôi chỉ ra rằng lệnh runas phải bao gồm miền của quản trị viên (ít nhất là trong thiết lập môi trường của tổ chức của tôi):

    runas /user:AdminDomain\AdminUserName ExampleScript.bat
    

    Nếu bạn chưa biết tên miền của người dùng quản trị, hãy chạy phiên bản Command Prompt với tư cách là người dùng quản trị viên và nhập lệnh sau:

    echo %userdomain%
    
  2. Các câu trả lời được cung cấp bởi cả Kerrek SBEd Greaves sẽ thực thi tệp đích dưới người dùng quản trị, nhưng, nếu tệp là tập lệnh Command (tệp .bat) hoặc tập lệnh VB (tệp .vbs) cố gắng hoạt động trên thông tin đăng nhập bình thường môi trường người dùng (chẳng hạn như thay đổi mục đăng ký), bạn có thể không nhận được kết quả mong muốn vì môi trường mà tập lệnh thực sự chạy sẽ là của người dùng quản trị viên, không phải người dùng đăng nhập bình thường! Ví dụ: nếu tệp là tập lệnh hoạt động trên tổ hợp HKEY_CURRENT_USER của sổ đăng ký, thì người dùng hiện tại đã bị ảnh hưởng, sẽ là người dùng quản trị viên chứ không phải người dùng đăng nhập bình thường.


0

Sử dụng ổ đĩa vật lý hoàn chỉnh \ path đến tệp bó đích của bạn trong Thuộc tính phím tắt.

Điều này không hoạt động trong Windows 10 nếu bạn sử dụng các ổ đĩa con như tôi đã cố gắng làm lúc đầu ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.