python使用win注册表实现开机自启

python使用win注册表实现开机自启

要用python做一个今日校园的自动化打卡,但是网上大多是需要去使用windows的任务计划,比较麻烦,所以我们使用了win32api,通过此模块进行注册表操作,更改启动项

首先我们需要的模块是:pypiwin32

可以使用pip安装

1
pip install pypiwin32

也可以使用pycharm安装

安装后使用需要导入头文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import win32api
import win32con

def register():
name = 'nonepage_dalay' # 要添加的项值名称
program_path = os.path.abspath('.') + '\\main.exe' # 要添加的exe路径
# 注册表项名
KeyName = 'Software\\Microsoft\\Windows\\CurrentVersion\\Run'
# 异常处理
try:
key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, KeyName, 0, win32con.KEY_ALL_ACCESS)
win32api.RegSetValueEx(key, name, 0, win32con.REG_SZ, program_path)
win32api.RegCloseKey(key)
except:
print('添加失败')
print('添加成功!')

踩坑点: 在python3.7 3.6上可以使用pyinstaller正常打包,在python3.8会出现不兼容的错误

1
2
3
8723 WARNING: lib not found: pywintypes38.dll dependency of c:\users\python\python38-32\lib\site-packages\win32\win32evtlog.pyd

8780 WARNING: lib not found: pywintypes38.dll dependency of c:\users\python\python38-32\lib\site-packages\win32\win32api.pyd

解决方案:

这个问题还是相当小众的,我搜了很久,没几个这样的结果,最终在国外的一个论坛找到了解决方案

大意是python3.8更新了很多东西,导致打包有点问题

不过神奇的网友给了一个神奇的方法,可以通过导入一个其他的模块,就可以正常运行了

像这样:

1
2
3
import pywintypes
import win32api
import win32con

这件事告诉我们,百度是真的辣鸡,小众的技术问题全是各种抄,各种百家号,不同的网站同一个内容

谷歌牛批!

enjoy~

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×