2013-08-04 21 views
8

Làm cách nào để bắt đầu/gọi một tệp lô từ một tệp khác, nhưng với đặc quyền quản trị để nó không cho tôi lỗi như sau?Làm cách nào để bắt đầu một chương trình có đặc quyền quản trị trong một tệp hàng loạt

Truy cập bị từ chối mã lỗi 5

Dưới đây là một cái gì đó giống như những gì tôi muốn nó được.

echo PLEASE TYPE YOUR USERNAME AND PASSWORD IN THE FIELDS BELOW. 
echo. 
echo. 
echo. 
echo. 
set /p u=Username: 
echo. 
set /p p=Password: 
start next.bat %u% %p% 
+0

Sử dụng lệnh 'runas'. –

+0

@a_horse_with_no_name bạn có thể vui lòng xây dựng, tôi đã làm 'runas /?' Và cú pháp không hiển thị như thế nào để cung cấp một mật khẩu mà không được nhắc nhở. – cmd

+0

có thể trùng lặp của [Tập lệnh Batch để chạy với tư cách quản trị viên] (http://stackoverflow.com/questions/14639743/batch-script-to-run-as-administrator) – Endoro

Trả lời

1

Nhấp chuột phải -> Chạy với tư cách quản trị viên.

Tôi nghĩ rằng microsoft đã tạo ra càng nhiều càng tốt để ngăn chặn tập lệnh hàng loạt có quyền quản trị viên của chính họ.

+1

@ jean-Michael_Celerier cảm ơn bạn nhưng tôi muốn làm điều này trong chính lô đó. – cmd

+0

@cmd bạn có thấy lỗ hổng bảo mật có thể không? bất kỳ ai cũng có thể tạo một tập lệnh và định dạng lô ngẫu nhiên c: ... –

+1

không thực sự vì chúng vẫn phải cung cấp mật khẩu. khi bạn chạy như admin bằng tay, hoặc ghim nó vào thanh tác vụ của bạn và sau đó chỉnh sửa nó để luôn chạy như admin (như cmd.exe của tôi) thì bạn không cần admin pass, bạn chỉ cần nhấp vào nút yes hoặc sau khi thay đổi cài đặt chỉ cần nhấp vào biểu tượng. @ jean-Michael Celerier – cmd

2

Đôi khi các tiện ích của bên thứ ba như AutoIt (xem runas chức năng) không phải là một tùy chọn - nhưng nếu bạn có tùy chọn đó, hãy kiểm tra xem nó sẽ cho phép bạn thực hiện chính xác những gì bạn đang hướng đến. Sau đó bạn có thể gọi kịch bản AutoIt từ tập lệnh của bạn và sử dụng chức năng runas của nó.

Windows runas không hỗ trợ cung cấp mật khẩu trừ khi bạn hài lòng với tùy chọn /savecred - đó là tốt nếu bạn chỉ chạy tác vụ từ một máy tính duy nhất. Lần đầu tiên nó sẽ hỏi bạn mật khẩu, nhưng sau đó nó sẽ không (mặc dù bạn vẫn phải sử dụng tùy chọn /savecred mỗi khi bạn sử dụng nó). Tôi đã có một cảm giác sử dụng điều này có thể là một lỗ hổng bảo mật rất lớn. Nhưng vì có vẻ như điều này là dành cho máy của riêng bạn, trong hàng loạt bạn sử dụng máy này:

runas /user:computername\username /savecred yourcommand.exe 

Một cách khác là thực hiện tác vụ theo lịch trình có thể được gọi bằng tập lệnh của bạn. Bạn có thể làm cho nó bằng cách sử dụng GUI hoặc từ một dòng lệnh nâng cao là described here.

Sau đó bạn có thể gọi nó là từ kịch bản của bạn như thế này:

SCHTASKS /Run /TN yourtaskname 
1

@cmd, tôi đăng một ví dụ (How can I test effective permissions of a user from a batch script?) để chạy một bat file với ShellExecuteelevated quyền (chỉ khi nó là cần thiết).

Hãy xem nếu đó là những gì bạn đang tìm kiếm và những gì bạn cần. Nếu không, hãy cho tôi biết và chúng tôi có thể điều chỉnh kịch bản của bạn để làm cho nó hoạt động.

chúc may mắn

2

Chỉ cần đặt tệp dơi vào thư mục Windows và nó sẽ chạy với tư cách quản trị viên. Tôi đã tự mình thử điều này và đã hoạt động:

C:\Windows\batch_file.bat 

Nó sẽ hoạt động như thế.

+0

Điều này làm việc cho tôi là tốt, tốt hét lên. – Alex

2

Trong chính tệp bó không có cách nào để chạy với tư cách quản trị viên, tuy nhiên nếu bạn khởi chạy tệp lô từ bên trong tệp .VBS, bạn có thể chỉ định tham số 'runas'.

set shell=CreateObject("Shell.Application") 
shell.ShellExecute "your_batch_file.bat",,"C:\path\to\thedirectory", "runas", 0 
set shell=nothing 

Thao tác này sẽ khởi chạy tệp hàng loạt của bạn với tư cách quản trị viên và bạn có thể bật hoặc tắt hiển thị vỏ (ví dụ như tôi muốn chương trình chạy trong nền mà không nhìn thấy).

1

Bất kể bạn chọn cách nào, Bạn phải chấp nhận chạy nó với đặc quyền quản trị viên, vậy điểm có cách nào ngắn hơn? Bạn có thể Right Click > Run as administratorjean-Michael nói mặc dù tôi thích james cách tiếp cận (sử dụng vbScript) nhưng nếu bạn không muốn sử dụng tệp vbScript khác và chỉ muốn lợi ích của việc nhấp vào tệp hàng loạt và chấp nhận chạy với đặc quyền quản trị viên (Chú ý bạn có một cú nhấp chuột phải và nhấp chuột trái ít hơn) tôi đề nghị bạn điều này:

tạo một shortcut từ tập tin thực thi của bạn và nhấp chuột phải vào shortcut > Properties> shortcut Tab> Advanced tại check Run as administrator trả phòng hộp. mỗi khi bạn thực hiện nó từ shortcut bạn chỉ cần một cú nhấp chuột để chấp nhận chạy nó với đặc quyền quản trị.

Hy vọng trợ giúp này.

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