2009-03-05 34 views
14

Đây là máy tính Windows 2003 được bật mỗi sáng nhưng không có ai đăng nhập cho đến vài giờ sau đó.Chạy tập lệnh khi khởi động Windows mà không cần người dùng đăng nhập

Tôi muốn sử dụng thời gian ở giữa để chạy một kịch bản sao lưu c: \ script \ backup.cmd

Làm thế nào tôi có thể bắt đầu này không cần giám sát sau khi máy đã đưa ra?

tôi đã cố gắng 2 khóa registry, nhưng điều này dẫn đến kịch bản được chạy sau khi người dùng đăng nhập vào (đó là quá muộn):

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices 

Cuối cùng tôi sử dụng Windows TaskScheduler, người có một tùy chọn như vậy , nhưng tôi đã tự hỏi liệu có khả năng nào khác không?

Trả lời

19

Câu trả lời ngắn:GPEDIT.MSC (Start.Run, gpedit.msc)

Windows 2000 trở lên [1] cung cấp một máy tính Startup Scripts bộ sưu tập trong trình soạn thảo chính sách:

  • Computer Settings -> Windows Settings ->Scripts (Startup/Shutdown)

Có một tương đương đăng nhập khu vực tập lệnh (tức là sau khi khởi động máy tính, khi người dùng đăng nhập) trong bit Cấu hình người dùng.

dài:

GPEDIT.MSC là Group Policy chỉnh sửa giao diện điều khiển, và chạy lại cửa hàng Group Policy máy tính cục bộ khi nó được sử dụng trực tiếp, vì vậy nó rất hữu ích để thiết lập địa phương chỉ tham số.Khi sử dụng Active Directory, cùng một giao diện được sử dụng để chỉnh sửa các đối tượng chính sách nhóm được lưu trữ trong rừng (GPO), vì vậy các cài đặt tương tự có sẵn trên một loạt các máy.

Kịch bản khởi động máy tính chạy trong ngữ cảnh máy tính , nghĩa là chúng không thể truy cập các ổ đĩa mạng yêu cầu người dùng hoặc thành viên nhóm nhất định hoạt động, v.v. Khi máy tính truy cập vào mạng, họ thường (có ngoại lệ) sử dụng tài khoản MACHINENAME $ của họ.

A tập lệnh khởi động là cách nhanh chóng và dễ dàng để có được quy trình chạy khi máy khởi động.

Quá trình khởi động máy tính sẽ bị ảnh hưởng bởi thời gian cần thiết để chạy chương trình, vì vậy bạn có thể muốn đảm bảo bạn gọi nó bằng lệnh START từ tệp lô hoặc chỉ định không chờ tệp thực thi hoàn thành bằng bất kỳ ngôn ngữ kịch bản nào bạn sử dụng. (điểm quan trọng là: chạy tập lệnh không đồng bộ trừ khi nó quan trọng hoặc không cần phải chạy không đồng bộ cos nó sẽ luôn luôn mất không có thời gian ở tất cả. Khởi động dài = người dùng không hài lòng).

Sử dụng dịch vụ Win32 là một tùy chọn thay thế - bạn có thể sử dụng tiện ích SRVANY từ Bộ tài nguyên để "dịch vụ-ify" khá nhiều bất kỳ thực thi nào. VS.Net 2002 và sau đó cũng cho phép bạn xây dựng một dịch vụ được quản lý trực tiếp.

Task Scheduler được nhiều nhiều khả năng như của Vista/2008, có khả năng chạy các kịch bản lúc khởi động, trên nhàn rỗi, và/hoặc khi Event Logs được tạo ra hoặc một số điều kiện khác được đáp ứng: nó khá mát mẻ! Tác vụ theo lịch biểu có lợi thế có thể là có thể chỉ định tài khoản người dùng mà tác vụ đó chạy, nếu điều đó quan trọng đối với bạn.

Caveat Scriptor: http://support.microsoft.com/kb/256320

Run Startup Scripts không đồng bộ: http://msdn.microsoft.com/en-us/library/ms811602.aspx

Vista Task Scheduler (những gì là mới): http://technet.microsoft.com/en-us/appcompat/aa906020.aspx

[1] Windows XP, 2003, Vista/2008, Windows 7/2008R2, Windows 8/2012, Windows 8.1/2012R2, Windows 10/Windows Server 2016. Mọi thứ. Nhưng NT4 thì không!

+1

Cảm ơn bạn, rõ ràng là bạn đã trả lời từ mọi góc độ. –

+0

'Cài đặt/cấu hình máy tính -> Cài đặt Windows -> Scripts' Bạn có thể tìm thấy điều này bằng cách mở Local Group Policy Editor, vì không ai giải thích cách truy cập cửa sổ này. – liltitus27

+0

@TristanK, tôi có Windows 2K, nơi chúng tôi sao chép nó (vmware) và cô lập nó khỏi mạng (cắt bộ điều hợp mạng), đối với một số thử nghiệm với cơ sở dữ liệu của chúng tôi. Nhưng sau đó, các kịch bản khởi động/tắt máy LOCAL GPO không bắt đầu nữa. Các kịch bản khởi động GPO cục bộ phụ thuộc vào hoạt động nertwork ou AD có sẵn? – ceinmart

8

Bạn đã vạch ra một giải pháp tốt:

Thiết lập một scheduled task để chạy lúc khởi động và cho phép công việc để chạy khi người dùng không đăng nhập.

+0

Có, điều này hoạt động tốt. Nhưng tôi muốn vô hiệu hóa Task Scheduler vì vậy tôi đang tìm cách tiếp cận khác. –

1

Bạn có thể chạy một kịch bản lúc khởi động hệ thống sử dụng chính sách nhóm gpedit.msc

+0

Điều này có vẻ nhanh chóng và dễ dàng. Người dùng sẽ chạy quy trình nào? LocalSystem'? –

0

Cách bạn aleady làm điều này có vẻ tốt đẹp đối với tôi; tuy nhiên nếu bạn muốn một phương pháp thay thế thì dịch vụ sẽ bắt đầu khi máy khởi động để bạn có thể viết một dịch vụ phát hiện nếu đó là ngày mới (để cho phép khởi động lại) và nếu nó chạy bản sao lưu của bạn.

Nếu I đã thực hiện dịch vụ này tôi sẽ sử dụng TCL vì tôi biết và thích nó và tiện ích mở rộng twapi cho phép bạn chạy tập lệnh dưới dạng dịch vụ. Các ngôn ngữ kịch bản khác cũng có thể có các cơ sở tương tự.

+0

Cảm ơn bạn điều này có vẻ thú vị. Khi tôi sẽ phải viết một dịch vụ vào một ngày nào đó tôi sẽ xem xét TCl/twapi –

0

Có, nếu bạn đang sử dụng Active Directory. Nếu bạn có thể cách ly máy tính với OU của riêng mình hoặc sử dụng tính năng lọc WMI, bạn có thể gán một GPO có một tập lệnh khởi động cho máy tính. Điều này sẽ đảm bảo rằng ngay cả khi ai đó đã đi qua chế độ an toàn và vô hiệu hóa Task Scheduler, khi khởi động và kết nối với miền, tập lệnh sẽ chạy.

+0

Cảm ơn bạn, đây là một điều tuyệt vời để biết, tôi có một số máy trong AD và sẽ thử một ngày này. –

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