2013-07-16 28 views
6

Tôi có một tập lệnh chạy trong 2 phần. Phần đầu tiên yêu cầu quyền truy cập quản trị (cập nhật tệp HOSTS và thực hiện sao chép/ghi đè). Sau khi phần đó kết thúc, tôi cần ánh xạ một ổ đĩa bằng bí danh tên máy chủ, phần đầu tiên của tập lệnh được cập nhật.Chạy hàng loạt dưới dạng Quản trị viên (tự động nâng cấp) và sau đó de-elevate

Tôi đã tìm ra cách nhận các đặc quyền nâng cao bằng cách sử dụng SO Question này. Nhưng ánh xạ một ổ đĩa (trong khi ở admin) ánh xạ một ổ đĩa vào phiên của quản trị viên. Tôi cần phải "de-elevate" trở lại chế độ người dùng để chạy tập lệnh thứ hai của mình.

Đây là tập lệnh tôi chạy ít nhất một lần mỗi ngày và có thể nhiều lần mỗi ngày. Tôi đang cố gắng để tạo ra một giải pháp mà chỉ là 1 .bat tập tin, nếu có thể. Vì lý do, các kịch bản được viết bằng perl.

Những điều tôi đã cố gắng:

  1. Sử dụng runas/user: lệnh regular_user (điều này không không làm việc)
  2. tập 1 dơi Sử dụng CALL cho 2 tập tin batch (Điều này "công trình "nhưng vì một lý do nào đó cả hai hoạt động cùng một lúc)
  3. Chạy hai tệp bat riêng biệt và theo cách thủ công.
  4. Tìm kiếm SO, nhưng tôi không thể tìm thấy do quản trị viên> người dùng thay vì chỉ user-> admin

TLDR:Làm thế nào để de-nâng cao chế độ người dùng từ chế độ quản trị trong một tập tin thực thi?

Trả lời

2

Đặt cược tốt nhất của bạn là sử dụng công cụ thực thi từ xa/cục bộ của bên thứ ba tốt nhất: Windows Sysinternals PSEXEC. Bạn có thể cung cấp thông tin đăng nhập và thực hiện những gì bạn cần bằng cách sử dụng PSEXEC! Bạn có thể đặt lệnh PSEXEC vào tập tin batch hoặc vbs của bạn và để chúng chạy mà không bị cản trở. Bạn cũng có thể gọi một lệnh với quyền nâng cao PSEXEC và lệnh tiếp theo mà không có bất kỳ độ cao nào, trong khi trộn thông tin đăng nhập vào một tệp lô duy nhất.

http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

+0

Tuyệt, điều này có vẻ đầy hứa hẹn. Cảm ơn. – Ishikawa91

0

Trước tiên hãy làm phần không nâng lên, sau đó nâng lên và tiếp tục.

+0

Tôi không chắc liệu điều đó có thể xảy ra trong kịch bản của OP hay không. OP nói rằng anh ta cần phải cập nhật tập tin HOSTS đầu tiên, và sau đó sử dụng bí danh mới để làm phần thứ hai. – user1071777

2

Nếu bạn đang sử dụng 2 file hàng loạt, gọi hàng loạt ElevatedBatch.cmd với độ cao bằng cách sử dụng Main.cmd (mà tiếp tục làm những việc unelevated):

@ECHO OFF 
START /WAIT ElevatedBatch.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9 
REM here you can do unelevated stuff: 
ECHO Running unelevated now 

Tham số /WAIT đảm bảo rằng kịch bản sẽ đợi cho đến ElevatedBatch.cmd đã kết thúc . Đối với ElevatedBatch.cmd bạn có thể sử dụng mẫu như this một để nâng cấp.