Tự động chạy tập lệnh khi tôi đăng nhập vào Windows


27

Làm cách nào tôi có thể tự động chạy tập lệnh khi đăng nhập vào Windows?

Tôi muốn chạy một cái gì đó như thế này bất cứ khi nào tôi đăng nhập vào máy tính của mình:

echo %USERNAME% logged on at %DATE% %TIME% >> log.txt

Phần thưởng sẽ có thể chạy cùng một kịch bản bất cứ khi nào tôi mở khóa trình bảo vệ màn hình.


câu trả lời được xác định là chỉ số octan rất cao - sử dụng một lớp lót của bạn, tôi cung cấp một cái gì đó khiêm tốn hơn (nhưng hiệu quả) bên dưới ... ;-)
Jeff

Câu trả lời:


19

Bạn có thể tạo một tác vụ theo lịch trình sẽ chạy khi máy tính của bạn được mở khóa:

  1. Bắt đầu> Công cụ quản trị> Trình lập lịch tác vụ
  2. khung bên trái: chọn Thư viện lập lịch tác vụ
  3. khung bên phải: nhấp vào Tạo tác vụ ... (LƯU Ý: đây là cách duy nhất để có được trình kích hoạt chính xác)
  4. trong hộp thoại Tạo tác vụ:
    • Tab chung - cung cấp tên cho nhiệm vụ của bạn
    • Tab kích hoạt - nhấp vào Mới ... và chọn Mở khóa máy trạm
    • Tab hành động - nhấp vào Mới ... và nhấp Duyệt ... để xác định vị trí tập lệnh của bạn
    • Tab điều kiện - bỏ chọn Chỉ bắt đầu tác vụ nếu máy tính bật nguồn AC

Ngoài ra, tôi đã điều chỉnh đường dẫn trong kịch bản để đọc

echo %USERNAME% logged on at %DATE% %TIME% >> %USERPROFILE%\log.txt

22

Nếu bạn đã có một kịch bản:

Để gán tập lệnh đăng nhập cho người dùng hoặc nhóm

  • Quản lý máy tính mở.
  • Trong cây điều khiển, bấm Người dùng.

Ở đâu? Công cụ hệ thống / Người dùng cục bộ và Nhóm / Người dùng

  • Bấm đúp vào người dùng mà bạn muốn gán tập lệnh đăng nhập.
  • Nhấp vào tab Hồ sơ.
  • Trong trường Tập lệnh đăng nhập, nhập đường dẫn và tên của tập lệnh đăng nhập bạn muốn gán cho người dùng đó, sau đó bấm OK.

Khác ở đây là một "HowTo" tiện dụng từ Microsoft

Tạo tập lệnh đăng nhập

Bạn có thể sử dụng tập lệnh đăng nhập để gán các tác vụ sẽ được thực hiện khi người dùng đăng nhập vào một máy tính cụ thể. Các tập lệnh có thể thực hiện các lệnh hệ điều hành, đặt các biến môi trường hệ thống và gọi các tập lệnh khác hoặc các chương trình thực thi. Họ Windows Server 2003 hỗ trợ hai môi trường tập lệnh: bộ xử lý lệnh chạy các tệp chứa các lệnh ngôn ngữ bó và Windows Script Host (WSH) chạy các tệp chứa Microsoft Visual Basic Scripting Edition (VBScript) hoặc các lệnh Jscript. Bạn có thể sử dụng trình soạn thảo văn bản để tạo tập lệnh đăng nhập. Một số tác vụ thường được thực hiện bởi các kịch bản đăng nhập bao gồm:

  • Ánh xạ ổ đĩa mạng.
  • Cài đặt và cài đặt máy in mặc định của người dùng.
  • Thu thập thông tin hệ thống máy tính.
  • Cập nhật chữ ký virus.
  • Cập nhật phần mềm.
  • Kịch bản đăng nhập ví dụ sau có chứa các lệnh VBScript sử dụng Active Directory
  • Giao diện dịch vụ (ADSI) để thực hiện ba tác vụ phổ biến dựa trên tư cách thành viên nhóm của người dùng:

Nó ánh xạ ổ đĩa H: vào thư mục chính của người dùng bằng cách gọi phương thức MapNetworkDrive của đối tượng WSH kết hợp với thuộc tính UserName của đối tượng WSH Network. Nó sử dụng đối tượng ADSI IADsADSystemInfo để lấy tên phân biệt của người dùng hiện tại, lần lượt được sử dụng để kết nối với đối tượng người dùng tương ứng trong Active Directory. Khi kết nối được thiết lập, danh sách các nhóm mà người dùng là thành viên sẽ được truy xuất bằng cách sử dụng thuộc tính MemberOf của người dùng. Danh sách nhiều tên nhóm được nối thành một chuỗi bằng cách sử dụng hàm Tham gia của VBScript để giúp tìm kiếm tên nhóm mục tiêu dễ dàng hơn.

Nếu người dùng hiện tại là thành viên của một trong ba nhóm được xác định ở đầu tập lệnh, thì tập lệnh sẽ ánh xạ ổ đĩa G: của người dùng sang ổ đĩa chung của nhóm và đặt máy in mặc định của người dùng thành máy in nhóm. Để tạo một kịch bản đăng nhập mẫu

  • Mở Notepad.
  • Sao chép và dán, hoặc gõ, như sau:

    Const ENGINEERING_GROUP     = "cn=engineering"
    Const FINANCE_GROUP         = "cn=finance"
    Const HUMAN_RESOURCES_GROUP = "cn=human resources"
    
    Set wshNetwork = CreateObject("WScript.Network")
    wshNetwork.MapNetworkDrive "h:",
    "\\FileServer\Users\" & wshNetwork.UserName
    
    Set ADSysInfo = CreateObject("ADSystemInfo")
    Set CurrentUser = GetObject("LDAP://" &
    ADSysInfo.UserName)
    strGroups = LCase(Join(CurrentUser.MemberOf))
    
    If InStr(strGroups, ENGINEERING_GROUP) Then
    
        wshNetwork.MapNetworkDrive "g:",
        "\\FileServer\Engineering\"
        wshNetwork.AddWindowsPrinterConnection
        "\\PrintServer\EngLaser"
        wshNetwork.AddWindowsPrinterConnection
        "\\PrintServer\Plotter"
        wshNetWork.SetDefaultPrinter
        "\\PrintServer\EngLaser"
    
    ElseIf InStr(strGroups, FINANCE_GROUP) Then
    
        wshNetwork.MapNetworkDrive "g:",
        "\\FileServer\Finance\"
        wshNetwork.AddWindowsPrinterConnection
        "\\PrintServer\FinLaser"
        wshNetWork.SetDefaultPrinter
        "\\PrintServer\FinLaser"
    
    ElseIf InStr(strGroups, HUMAN_RESOURCES_GROUP) Then
    
        wshNetwork.MapNetworkDrive "g:",
        "\\FileServer\Human Resources\"
        wshNetwork.AddWindowsPrinterConnection
        "\\PrintServer\HrLaser"
        wshNetWork.SetDefaultPrinter
        "\\PrintServer\HrLaser"
    
    End If
    
  • Trên menu Tệp, bấm Lưu với tên.

  • Trong Save in, nhấp vào thư mục tương ứng với thư mục chia sẻ Netlogon của bộ điều khiển miền (thường là SystemRoot \ SYSVOL \ Sysvol \ DomainName \ ScScript trong đó DomainName là tên miền đủ điều kiện của tên miền).
  • Trong Lưu dưới dạng, bấm Tất cả Tệp.
  • Trong Tên tệp, nhập tên tệp, theo sau là .vbs, rồi bấm Lưu. WSH sử dụng phần mở rộng .vbs để xác định các tệp có chứa các lệnh VBScript.

Luôn luôn tốt để thấy ai đó thích câu trả lời :-D
Ivo Flipse

tôi gần như muốn bật CW này và gắn thẻ faq :)
quack quixote

Hãy là khách của tôi @quack ;-) FAQ cho những gì thực sự?
Ivo Flipse

14

Cách đơn giản nhất tôi có thể nghĩ đến là đặt tệp này vào tệp .bat trong thư mục khởi động của bạn.

Một cách phức tạp hơn là thêm tệp bó vào sổ đăng ký trong

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

mã đăng kí.


8
Nếu bạn muốn chạy cái này khi bất kỳ người dùng nào đăng nhập, bạn cần đặt nó vào thư mục khởi động Tất cả người dùng ( % allusersprofile% / Start Menu \ Programs \ Startup ) hoặc tạo một mục trong phần Run của LocalMachine reg hive: HKLM \ Phần mềm \ Microsoft \ Windows \ CurrentVersion \ Run )
Treb

Tôi chạy một .exe thông qua cách này, nhưng có cách nào để nó chạy yên lặng không? Không mở và giữ một cmd?
bzupnick 19/03/2015

2

Một phương pháp thay thế tốt là tạo một tệp bó với các lệnh bạn muốn chạy trong đó. Tiếp theo, bạn sẽ chỉ định trong trình chỉnh sửa chính sách trên máy rằng nó chạy tập lệnh đăng nhập như một phần của quy trình đăng nhập. Lưu ý nhanh là tùy chọn này chỉ khả dụng trên XP Pro chứ không phải phiên bản gia đình.

Hướng dẫn soạn thảo chính sách nhóm tại đây


2

Bất cứ ai cũng biết nếu điều này có thể được sử dụng để chạy khi màn hình bị khóa / mở khóa là tốt?

Có một cách cho Windows 7 và / hoặc Windows Server 2008.

Sử dụng Trình lập lịch tác vụ, tạo tác vụ cơ bản mới, vì Trình kích hoạt sử dụng "Khi tôi đăng nhập".


Bạn không thể sử dụng tác vụ cơ bản nếu bạn muốn kích hoạt là "Mở khóa máy trạm"
Jeff

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.