Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

รันสคริปต์ Python อัตโนมัติเมื่อ Windows เริ่มต้น (Autorun Python script on Windows startup)

การเพิ่มสคริปต์ Python เข้าไปใน Windows start-up หมายถึงสคริปต์จะทำงานเมื่อ Windows บูทอัพ สามารถทำได้ด้วยกระบวนการสองขั้นตอน:

ขั้นตอน #1: เพิ่มสคริปต์เข้าโฟลเดอร์ Startup ของ Windows

หลังจากบูทอัพ Windows จะ execute (เทียบเท่า double-click) แอปพลิเคชันทั้งหมดที่อยู่ในโฟลเดอร์ startup หรือไดเรกทอรี

ที่อยู่ (Address)

C:\Users\current_user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\

โดยโฟลเดอร์ AppData ภายใต้ current_user จะเป็น hidden โดยค่าเริ่มต้น ให้ enable hidden files เพื่อเข้าไปและวาง shortcut ของสคริปต์ในที่อยู่ที่กำหนด หรือสคริปต์เอง นอกจากนี้ ไฟล์ .PY ต้องตั้งค่า default ให้เป็น Python IDE มิฉะนั้นสคริปต์อาจเปิดเป็นข้อความแทนการ execute

ขั้นตอน #2: เพิ่มสคริปต์เข้า Windows Registry

กระบวนการนี้อาจมีความเสี่ยงหากทำไม่ถูกต้อง รวมถึงการ edit Windows registry key HKEY_CURRENT_USER จากสคริปต์ Python เอง Registry นี้ประกอบด้วยรายการโปรแกรมที่ต้อง execute หนึ่งครั้งเมื่อผู้ใช้ Login Registry Path:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

โค้ด Python ด้านล่าง

# Python code to append or add current script to the registry
# module to modify or edit the windows registry
import winreg as reg1
import os

def AddToRegistry():
    # ใน python __file__ แทน instant ของ
    # file path ที่รันหรือ execute
    # ถ้ารันจาก desktop
    # __file__ จะเป็น
    # c:\users\current_user\desktop
    pth1 = os.path.dirname(os.path.realpath(__file__))
    # Python file name with extension
    s_name1 = "mYscript.py"
    # ชื่อไฟล์ต่อท้ายที่อยู่ path
    address1 = os.path.join(pth1, s_name1)
    # key ที่ต้องการแก้ไขคือ HKEY_CURRENT_USER
    # key value คือ Software\Microsoft\Windows\CurrentVersion\Run
    key1 = reg1.HKEY_CURRENT_USER
    key_value1 = "Software\\Microsoft\\Windows\\CurrentVersion\\Run"
    # เปิด key เพื่อทำการแก้ไข
    open = reg1.OpenKey(key1, key_value1, 0, reg1.KEY_ALL_ACCESS)
    # เปลี่ยนหรือแก้ไข key ที่เปิด
    reg1.SetValueEx(open, "any_name", 0, reg1.REG_SZ, address1)
    # ปิด key ที่เปิด
    reg1.CloseKey(open)

# Driver Code
if __name__ == "__main__":
    AddToRegistry()