# -*- coding:utf-8 -*-
# author:lizonezhi
import os
import sys
import pythoncom
import win32com.client as client
def createShortCut(filename): # 目前創建的無起始位置
"""filename should be abspath, or there will be some strange errors"""
try:
# 設置快捷方式的起始位置,此處設置為windows啟動目錄
working_directory = os.getenv(
'USERPROFILE') + '\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\\'
# 創建快捷方式的目標絕對路徑
lnkname = working_directory + filename + '.lnk'
# 要創建快捷方式的文件的絕對路徑,此處是獲取當前路徑
filename = os.path.dirname(os.path.realpath(sys.argv[0])) + '\\' + filename
shortcut = client.Dispatch("WScript.Shell").CreateShortCut(lnkname)
shortcut.TargetPath = filename
shortcut.save()
print('配置開機自啟')
except Exception as e:
print(e.args)
def set_shortcut(filename): # 如無需特別設置圖標,則可去掉iconname參數
try:
from win32com.shell import shell
from win32com.shell import shellcon
iconname = ""
# 設置快捷方式的起始位置,此處設置為windows啟動目錄
working_directory = os.getenv(
'USERPROFILE') + '\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\\'
# 創建快捷方式的目標絕對路徑
lnkname = working_directory + filename + '.lnk'
# 要創建快捷方式的文件的絕對路徑,此處是獲取當前路徑
filename = os.path.dirname(os.path.realpath(sys.argv[0])) + '\\' + filename
shortcut = pythoncom.CoCreateInstance(
shell.CLSID_ShellLink, None,
pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink)
shortcut.SetPath(filename)
# 設置快捷方式的起始位置, 不然會出現找不到輔助文件的情況
shortcut.SetWorkingDirectory(working_directory)
# 可有可無,沒有就默認使用文件本身的圖標
shortcut.SetIconLocation(iconname, 0)
if os.path.splitext(lnkname)[-1] != '.lnk':
lnkname += ".lnk"
shortcut.QueryInterface(pythoncom.IID_IPersistFile).Save(lnkname, 0)
return True
except Exception as e:
print(e.args)
return False
set_shortcut('test.exe')
以上代碼打包為test.exe后,雙擊啟動,可配置自身開機自啟(exe不能是uac管理員權限)。或者配置其它程序。
按 WIN + R 輸入?shell:startup 回車打開windows啟動目錄查看結果。
參考文章: