2011-11-23 27 views
110

Tôi có một tệp lô được gọi là test.bat. Tôi kêu gọi các hướng dẫn dưới đây trong file test.bat:Làm thế nào để chạy một ứng dụng dưới dạng "chạy với tư cách quản trị viên" từ dấu nhắc lệnh?

start /min powershell.exe %sysdrive%\testScripts\testscript1.ps1 

Khi tôi chạy qua cửa sổ lệnh, testscript của tôi đang chạy thành công. Tôi muốn chạy nó như là quản trị viên (như thể tôi đã tạo ra một shortcut trên desktop và chạy với tư cách quản trị viên. Nó không nên nhắc bất kỳ tên người dùng hoặc mật khẩu nào).

Tôi đã thử thêm các thông số /elevate/NOUAC vào bên trên test.bat, nhưng không có may mắn. Làm cách nào để khắc phục vấn đề này?

Tôi biết cách thực hiện thủ công, nhưng tôi muốn điều này được thực hiện từ dấu nhắc lệnh.

(By Marnix Klooster): ... mà không sử dụng bất kỳ công cụ bổ sung, như những đề xuất trong an answer to Super User question How to run program from command line with elevated rights)

+1

có thể trùng lặp của [Chạy tệp Batch với tư cách quản trị viên - Windows 7 - Lệnh "Chạy dưới dạng" từ hệ thống tệp mạng] (http://stackoverflow.com/questions/10415653/run-batch-file-as-administrator-windows -7-command-run-as-from-network-file) –

+75

Câu hỏi này là OK để hỏi ở đây và không nên đóng như là chủ đề tắt. Đó là một câu hỏi liên quan đến lập trình và phát triển phần mềm. Chương trình DotNet và C++ tất cả đều có khả năng lặp lại với hệ thống và các chương trình khác bằng cách gọi lệnh console hoặc đơn giản là thông qua một tập tin thực thi. –

+1

Điều này hữu ích cho tôi: http://superuser.com/questions/55809/how-to-run-program-from-command-line-with-elevated-rights Đôi khi "chạy với tư cách quản trị viên" được dự kiến ​​có nghĩa là "chạy với quyền cao ". – User

Trả lời

21

Xem TechNet bài viết này:. Runas command documentation

Từ một dấu nhắc lệnh:

C:\> runas /user:<localmachinename>\administrator cmd 

Hoặc nếu bạn đã kết nối với miền:

C:\> runas /user:<DomainName>\<AdministratorAccountName> cmd 
+0

Tôi đọc lại câu hỏi của bạn và bạn không muốn trở thành thúc đẩy. Đề xuất của tôi sẽ gây ra một lời nhắc mật khẩu. Lấy làm tiếc! –

+8

tôi đã thử lệnh này, nó yêu cầu thông tin xác thực, nó không nên yêu cầu thông tin đăng nhập. như tôi đã đề cập trong truy vấn của tôi.nếu tôi nhấp chuột phải vào mục máy tính để bàn chạy nó như một quản trị viên là hành vi mong đợi. –

80

Hãy thử điều này:

runas.exe /savecred /user:administrator "%sysdrive%\testScripts\testscript1.ps1" 

Nó lưu mật khẩu lần đầu tiên và không bao giờ hỏi một lần nữa. Có thể khi bạn thay đổi mật khẩu quản trị viên, bạn sẽ được nhắc lại.

+1

Trong khi điều này có thể hoạt động chính xác, đó là một ý tưởng hoàn toàn khủng khiếp vì nó làm suy yếu toàn bộ khái niệm về UAC. –

+7

@BenVoigt vui lòng đề nghị thay thế sau đó –

+6

Hãy thử 'powershell -Command" Bắt đầu quá trình 'C: \ program.exe' -Verb runAs "' (thay thế 'C: \ program.exe' bằng lệnh của bạn), xem http://superuser.com/questions/55809/how-to-run-program-from-command-line-with-elevated-rights –

6

Dường như psexec -h là cách để làm điều này:

-h   If the target system is Windows Vista or higher, has the process 
      run with the account's elevated token, if available. 

nào ... dường như không được liệt kê trong tài liệu hướng dẫn trực tuyến trong Sysinternals - PsExec.

Nhưng nó hoạt động trên máy của tôi.

+0

Không hoạt động ở đây. Thay vào đó tôi chỉ nhận được đầu ra trợ giúp. – ygoe

+6

Điều này dường như không làm việc cho tôi trừ khi tôi chạy nó từ một quá trình đã có đặc quyền quản trị: "Không thể cài đặt dịch vụ PSEXESVC" – Vince

+1

Tôi thậm chí không có lệnh này trong Windows 10. - Không phải từ dấu nhắc lệnh hoặc từ Power Shell. – BrainSlugs83

Các vấn đề liên quan