在Windows 10上,在用户登录之前自动启动脚本通常需要修改系统的启动项或者使用计划任务。以下是两种可能的方法:
方法一:修改系统注册表
- 按
Win + R
打开运行窗口,输入regedit
打开注册表编辑器。 - 转到路径
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
。 - 在右侧窗口中,右键点击空白处,选择
新建 -> 字符串值
。 - 给新建的字符串值取一个名称,然后设置其数值为要运行的脚本的完整路径。请注意,这种方法需要管理员权限。
方法二:使用计划任务
- 打开任务计划程序(Task Scheduler),你可以通过在开始菜单中搜索找到它。
- 在左侧导航栏中,选择
任务计划程序库
。 - 在右侧窗口中,右键点击空白处,选择
创建基本任务
。 - 按照向导的提示进行操作,当要求输入“触发器”时,选择
开始时
,然后选择不论是否登录
。 - 在“操作”步骤中,选择
启动程序
,然后选择要运行的脚本的路径。 - 完成向导并保存任务。无论哪种方法,都需要确保脚本的路径是正确的,并且系统能够访问到它。同时,注意运行的脚本不应该依赖于用户的特定环境,因为在未登录状态下,可能无法访问某些用户特定的资源。
实战:
- 开机自动联网脚本,networking.py
import time
from selenium import webdriver
import os
from subprocess import run, PIPE
if __name__ == "__main__":
## 第一个大循环,保证电脑开着的途中每隔1小时检测网络
while True:
cnt = 1
## 如果联网失败,就重复连,直到连上
while True:
r = os.system('ping www.baidu.com')
r = run("ping www.baidu.com", stdout=PIPE, stderr=PIPE, stdin=PIPE, shell=True)
## 判断ping的结果,据此判断是否联网
if r.returncode:
print('relogin第{}次:'.format(cnt))
driver = webdriver.Edge(executable_path="D:\\network\\msedgedriver.exe")
driver.get("http://172.16.8.8")
time.sleep(20)
driver.find_element_by_id("username").send_keys("学号")
driver.find_element_by_id("password").send_keys("密码")
driver.find_element_by_id("login-account").click()
time.sleep(2)
driver.quit()
cnt += 1
else:
print("已经正常联网")
break
time.sleep(3600)
- 设置成cmd命令用bat脚本,network.bat
@echo off
start cmd /k "D:\Anaconda3\python.exe D:\network\networking.py"
- 最后可以按照方法一,设置bat文件开机自启动