เรียกใช้สคริปต์โดยอัตโนมัติเมื่อฉันเข้าสู่ระบบ Windows


27

ฉันจะเรียกใช้สคริปต์โดยอัตโนมัติเมื่อฉันเข้าสู่ระบบ Windows ได้อย่างไร

ฉันต้องการเรียกใช้สิ่งนี้ทุกครั้งที่ลงชื่อเข้าใช้คอมพิวเตอร์:

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

โบนัสจะสามารถเรียกใช้สคริปต์เดียวกันเมื่อใดก็ตามที่ฉันปลดล็อกโปรแกรมรักษาหน้าจอเช่นกัน


accpeted คำตอบคือออกเทนสูงมาก - โดยใช้หนึ่งซับของคุณฉันเสนอบางสิ่งบางอย่างที่อ่อนน้อมถ่อมตน (แต่มีประสิทธิภาพ) ด้านล่าง ... ;-)
Jeff

คำตอบ:


19

คุณสามารถสร้างงานที่กำหนดเวลาไว้ซึ่งจะทำงานเมื่อปลดล็อคคอมพิวเตอร์ของคุณ:

  1. เริ่ม> เครื่องมือการดูแลระบบ> ตัวกำหนดเวลางาน
  2. บานหน้าต่างด้านซ้าย: เลือก Task Scheduler Library
  3. บานหน้าต่างด้านขวา: คลิกสร้างงาน ... (หมายเหตุ: นี่เป็นวิธีเดียวที่จะได้รับทริกเกอร์ที่ถูกต้อง)
  4. ในกล่องโต้ตอบสร้างงาน:
    • แท็บทั่วไป - ระบุชื่อสำหรับงานของคุณ
    • แท็บทริกเกอร์ - คลิกใหม่ ... และเลือกเมื่อปลดล็อคเวิร์กสเตชัน
    • แท็บการกระทำ - คลิกใหม่ ... และคลิกเรียกดู ... เพื่อค้นหาสคริปต์ของคุณ
    • แท็บเงื่อนไข - ยกเลิกการเลือกเริ่มงานเฉพาะเมื่อคอมพิวเตอร์ใช้ไฟ AC

นอกจากนี้ฉันปรับเส้นทางในสคริปต์ให้อ่าน

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

22

หากคุณมีสคริปต์อยู่แล้ว:

เพื่อกำหนดสคริปต์การเข้าสู่ระบบให้กับผู้ใช้หรือกลุ่ม

  • เปิดการจัดการคอมพิวเตอร์
  • ในคอนโซลทรีคลิกผู้ใช้

ที่ไหน? เครื่องมือระบบ / ผู้ใช้ท้องถิ่นและกลุ่ม / ผู้ใช้

  • คลิกสองครั้งที่ผู้ใช้ที่คุณต้องการกำหนดสคริปต์การเข้าสู่ระบบ
  • คลิกที่แท็บโปรไฟล์
  • ในฟิลด์สคริปต์การเข้าสู่ระบบป้อนเส้นทางและชื่อของสคริปต์การเข้าสู่ระบบที่คุณต้องการกำหนดให้กับผู้ใช้นั้นแล้วคลิกตกลง

นี่เป็น "HowTo" ที่มีประโยชน์จาก Microsoft

การสร้างสคริปต์การเข้าสู่ระบบ

คุณสามารถใช้สคริปต์การเข้าสู่ระบบเพื่อมอบหมายงานที่จะดำเนินการเมื่อผู้ใช้เข้าสู่ระบบคอมพิวเตอร์เฉพาะเครื่อง สคริปต์สามารถดำเนินการคำสั่งระบบปฏิบัติการตั้งค่าตัวแปรสภาพแวดล้อมของระบบและเรียกใช้สคริปต์อื่นหรือโปรแกรมที่ปฏิบัติการได้ ตระกูล Windows Server 2003 สนับสนุนสภาพแวดล้อมการเขียนสคริปต์สองแบบ: ตัวประมวลผลคำสั่งรันไฟล์ที่มีคำสั่งภาษาแบบแบตช์และ Windows Script Host (WSH) รันไฟล์ที่มีคำสั่ง Microsoft Visual Basic Scripting Edition (VBScript) หรือ Jscript คุณสามารถใช้โปรแกรมแก้ไขข้อความเพื่อสร้างสคริปต์การเข้าสู่ระบบ งานบางอย่างที่ดำเนินการโดยสคริปต์การเข้าสู่ระบบรวมถึง:

  • การทำแผนที่เครือข่ายไดรฟ์
  • การติดตั้งและการตั้งค่าเครื่องพิมพ์เริ่มต้นของผู้ใช้
  • การรวบรวมข้อมูลระบบคอมพิวเตอร์
  • การอัพเดตลายเซ็นไวรัส
  • กำลังอัปเดตซอฟต์แวร์
  • ตัวอย่างสคริปต์การเข้าสู่ระบบต่อไปนี้ประกอบด้วยคำสั่ง VBScript ที่ใช้ Active Directory
  • Service Interfaces (ADSI) เพื่อดำเนินงานทั่วไปสามอย่างตามการเป็นสมาชิกกลุ่มของผู้ใช้:

มันแมปไดรฟ์ H: ไปยังไดเรกทอรีหลักของผู้ใช้โดยเรียกเมธอด MapNetworkDrive ของวัตถุ WSH Network ร่วมกับคุณสมบัติชื่อผู้ใช้ของวัตถุ WSH Network จะใช้วัตถุ ADSI IADsADSystemInfo เพื่อรับชื่อที่แตกต่างของผู้ใช้ปัจจุบันซึ่งจะใช้ในการเชื่อมต่อกับวัตถุผู้ใช้ที่สอดคล้องกันใน Active Directory เมื่อสร้างการเชื่อมต่อแล้วรายชื่อกลุ่มที่ผู้ใช้เป็นสมาชิกจะถูกเรียกคืนโดยใช้แอตทริบิวต์ memberOf ของผู้ใช้ รายการชื่อกลุ่มที่มีหลายค่าถูกรวมเข้าด้วยกันในสตริงเดียวโดยใช้ฟังก์ชั่นเข้าร่วมของ VBScript เพื่อให้ค้นหาชื่อกลุ่มเป้าหมายได้ง่ายขึ้น

หากผู้ใช้ปัจจุบันเป็นสมาชิกของหนึ่งในสามกลุ่มที่กำหนดไว้ที่ด้านบนของสคริปต์สคริปต์จะแมปไดรฟ์ G: ของผู้ใช้กับไดรฟ์กลุ่มที่ใช้ร่วมกันและตั้งค่าเครื่องพิมพ์เริ่มต้นของผู้ใช้เป็นเครื่องพิมพ์กลุ่ม เพื่อสร้างสคริปต์การเข้าสู่ระบบตัวอย่าง

  • เปิด Notepad
  • คัดลอกและวางหรือพิมพ์รายการต่อไปนี้:

    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
    
  • บนเมนูแฟ้มคลิกบันทึกเป็น

  • ในบันทึกในคลิกไดเรกทอรีที่สอดคล้องกับโฟลเดอร์ Netlogon ที่ใช้ร่วมกันของตัวควบคุมโดเมน (โดยทั่วไปคือ SystemRoot \ SYSVOL \ Sysvol \ DomainName \ Scripts โดยที่ DomainName เป็นชื่อโดเมนที่ผ่านการรับรองโดยสมบูรณ์ของโดเมน)
  • ในบันทึกเป็นชนิดคลิกไฟล์ทั้งหมด
  • ในชื่อไฟล์พิมพ์ชื่อไฟล์ตามด้วย. vbs แล้วคลิกบันทึก WSH ใช้นามสกุล. vbs เพื่อระบุไฟล์ที่มีคำสั่ง VBScript

ดีใจที่ได้เห็นบางคนชอบคำตอบ:
Ivo Flipse

ฉันเกือบจะอยากเปิด CW นี้และแท็กมันคำถามที่พบบ่อย :)
นักต้มตุ๋น Quixote

เป็นแขกของฉัน @quack ;-) คำถามที่พบบ่อยสำหรับสิ่งที่จริง?
Ivo Flipse

14

วิธีที่ง่ายที่สุดที่ฉันสามารถนึกได้ก็คือการใส่สิ่งนี้ลงในไฟล์. bat ในโฟลเดอร์เริ่มต้นของคุณ

วิธีที่ซับซ้อนกว่านี้ก็คือการเพิ่มไฟล์แบตช์ในรีจิสทรีใน

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

รหัสรีจิสตรี


8
หากคุณต้องการที่จะทำงานนี้เมื่อใดผู้ใช้ล็อกอินคุณจะต้องใส่ไว้ในโฟลเดอร์ผู้ใช้ทั้งหมดเริ่มต้น ( % allusersprofile% / เมนูเริ่ม \ Programs \ Startup ) หรือทำรายการในส่วน Run of the LocalMachine reg รัง: HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run )
Treb

ฉันใช้. exe ผ่านทางนี้ แต่มีวิธีที่จะให้ทำงานอย่างเงียบ ๆ หรือไม่? โดยไม่ต้องเปิดและรักษาเปิด cmd?
bzupnick

2

วิธีอื่นที่ดีคือการสร้างแบตช์ไฟล์ด้วยคำสั่งที่คุณต้องการเรียกใช้ในพวกเขา ถัดไปคุณจะระบุในเครื่องมือแก้ไขนโยบายในเครื่องที่เรียกใช้สคริปต์การเข้าสู่ระบบเป็นส่วนหนึ่งของกระบวนการเข้าสู่ระบบ หมายเหตุสั้น ๆ คือตัวเลือกนี้มีเฉพาะใน XP Pro เท่านั้นไม่ใช่รุ่นโฮม

บทช่วยสอนการแก้ไขนโยบายกลุ่มที่นี่


2

ใครบ้างที่รู้ว่าสิ่งนี้สามารถใช้ในการทำงานเมื่อหน้าจอถูกล็อค / ปลดล็อคเช่นกัน?

มีวิธีสำหรับ Windows 7 และ / หรือ Windows Server 2008

ใช้ตัวกำหนดเวลางานสร้างงานขั้นพื้นฐานใหม่เนื่องจากทริกเกอร์ใช้ "เมื่อฉันเข้าสู่ระบบ"


คุณไม่สามารถใช้งานพื้นฐานได้หากคุณต้องการให้ทริกเกอร์เป็น "ในการปลดล็อคเวิร์กสเตชัน"
Jeff

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.