一些关于python项目的实际问题和解决办法。
陆续更新中。。。
目录
问题二:使用python操作exe文件,实现 "开机自启动" 功能
问题一:MySQL开机自启动失败
Solution 1.
检查计算机服务中,是否设置MySQL自动启动,并确保MySQL状态为正在运行。
Solution 2.
开机时,可能因为某种原因,MySQL启动的时候较长,从而被系统强制停止。所以需要在注册表中设置《服务启动限制时长》,具体操作步骤如下:
- Win + R,并输入regedit,打开 "注册表编译器"
- 根据路径 "计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control" 找到Control文件夹
- 鼠标右键点击Control,新建 "DWORD(32 位)值(D)"
- 名称:ServicesPipeTimeout
- 数据:十进制-180000,即180000ms=180s
参考文章:https://blog.csdn.net/fyyyr/article/details/117435022
问题二:使用python操作exe文件,实现 "开机自启动" 功能
Solution 1.
通过python操控 "注册表编译器" ,直接把exe文件的路径添加到注册表指定文件夹中。
如果手动实现,具体步骤如下:
- Win + R,并输入regedit,打开 "注册表编译器"
- 根据路径 "计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVer sion\Run" 找到Run文件夹
- 鼠标右键点击Run,新建 "字符串值(S)"
- 名称:目标exe文件名称,不需要.exe后缀
- 数据:目标exe文件的绝对路径
如果使用python实现,代码如下:
import win32api
import win32con
name = r'demo' # 要添加的项值名称
path = 'C:\demo.exe' # 获取exe文件的绝对路径
KeyName = 'Software\\Microsoft\\Windows\\CurrentVersion\\Run' # 注册表中自动开启程序的路径
# 打开注册表,并跳转到指定的路径
key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, KeyName, 0, win32con.KEY_ALL_ACCESS)
# 添加exe文件的结对路径到注册表中
win32api.RegSetValueEx(key, name, 0, win32con.REG_SZ, path)
# 关闭注册表
win32api.RegCloseKey(key)
print("添加成功!")
Solution 2.
首先,创建exe文件的快捷方式,然后把快捷方式copy到文件夹中的自启动路径中。快捷方式是为了解决打包程序中的相对路径和绝对路径问题。其中,一个重要的细节:快捷方式起始位置的设置,保证 "双击快捷方式的效果" 和 "双击打包文件夹中exe文件的效果" 相同。
如果手动实现,具体步骤如下:
- 打开文件管理器,点击 "查看" ,选中 "隐藏的项目" 前面的ChenkBox
- 根据路径 "C:\系统用户路径\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\ Startup" 转到自启动文件夹Startup中
- 把exe快捷方式复制到Startup文件夹中
如果使用python实现,代码如下:
import os
import winshell
import getpass
def create_shortcut(bin_path: str, name: str, desc: str):
"""
:param bin_path: 软件真实exe路径
:param name: 快捷方式的路径 + 快捷方式名称
:param desc: 描述快捷方式内容:鼠标放在图标上面会有提示
:return:
"""
try:
shortcut = name + ".lnk"
winshell.CreateShortcut(
Path=shortcut,
Target=bin_path,
Icon=(bin_path, 0),
Description=desc
)
return True
except ImportError as err:
print("Well, do nothing as 'winshell' lib may not available on current os")
print("error detail %s" % str(err))
return False
if __name__ == '__main__':
# ################ 一些路径参数 ################ #
# 获取用户名
username = getpass.getuser()
# 系统盘符名称
syspath = os.getenv("SystemDrive")
# 不完全的自启动目录
exe_path = r"AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
# 自启动目录
startupPath = os.path.join(syspath, r"\users", username, exe_path)
bin_path = r"C:\demo\demo.exe" # 软件真实exe路径
link_path = startupPath + "\\demo" # 快捷方式的路径(创建到桌面路径)+ 快捷方式名称
desc = "Flying Bulldog" # 描述快捷方式内容:鼠标放在图标上面会有提示
# 桌面快捷方式的起始位置,否则会因为相对路径的存在而报错
link_filepath = os.path.join(startupPath, "demo.lnk")
# ############################################ #
# ########## 将快捷方式添加到自启动目录 ########### #
create_shortcut(bin_path, link_path, desc)
# 桌面快捷方式的起始位置,否则会因为相对路径的存在而报错
with winshell.shortcut(link_filepath) as link:
link.working_directory = "C:\demo"
# ############################################ #
print('添加成功!')
问题三:待更新。。。
>>> 如有疑问,欢迎评论区一起探讨!