Closed netsonicyxf closed 11 months ago
用管理员权限打开软件,才可以添加开机启动项。
右键 Umi-OCR.exe → 以管理员身份运行 → 重新添加开机自启
如顶楼所述,已经试过“管理员权限运行,启用“开机自启””‘——失败
很抱歉,之前误解了你的意思。
那么请查看一下:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
win+R
,输入cmd
,回车)。在命令行输入 echo %ProgramData%
。显示的值是否为C:\ProgramData
?win11 22H2 有同样的问题。可以创建桌面快捷方式,但是以管理员权限运行后,仍然无法添加开机自启和开始菜单。
@zhengbolun1218 如果可以,麻烦测试一下楼上的步骤,看看 Startup 目录是否正常。
@hiroi-sora 可以手动把快捷方式放到“启动”文件夹实现开机启动,但程序里设置就不行
好的。如果可以,请做以下测试:
用记事本打开文件 UmiOCR-data\py_src\utils\shortcut.py
你会看到一个 createShortcut
函数:
@staticmethod # 创建快捷方式,返回成功与否
def createShortcut(position):
lnkName = "Umi-OCR.lnk"
appPath = os.environ["APP_PATH"]
lnkPath = ShortcutApi.__getPath(position)
lnkPath = os.path.join(lnkPath, lnkName)
res = QFile.link(appPath, lnkPath)
return res
将该函数,替换为下述内容:
@staticmethod # 创建快捷方式,返回成功与否
def createShortcut(position):
lnkName = "Umi-OCR"
appPath = os.environ["APP_PATH"]
lnkPathBase = ShortcutApi.__getPath(position)
lnkPathBase = os.path.join(lnkPathBase, lnkName)
lnkPath = lnkPathBase + ".lnk"
i = 1
while os.path.exists(lnkPath): # 快捷方式已存在
lnkPath = lnkPathBase + f" ({i}).lnk" # 添加序号
i += 1
appFile = QFile(appPath)
res = appFile.link(lnkPath)
if not res:
os.MessageBox(
f"appPath:\n{appPath}\nlnkPath:\n{lnkPath}\n报错:\n{appFile.errorString()}",
info="无法生成快捷方式",
)
return res
重新以管理员权限启动软件,并添加开机自启。此时如果操作失败,会弹出一个弹窗,展示报错信息。 请将该弹窗截图给我。这个信息查明问题非常有用。
替换后,已成功设置选项。可以开机自启
我大概明白了。可能是文件名重复引起。
你可能以前用过旧版Umi-OCR并添加过开机自启,已经存在一个快捷方式。此时用新版Umi再添加新的快捷方式,就会存在文件冲突。
在一些系统中(我的测试环境),遇到冲突时,会让新的快捷方式文件强制覆盖掉旧的文件。但在你们的系统中,也许遇到冲突时会禁止执行操作。
我刚刚优化了创建代码,如果 Umi-OCR.lnk
已存在,则会创建 Umi-OCR (1).lnk
等带序号的快捷方式,避免文件名重复。
感谢测试~
预览版 dev 20231018 管理员权限启动,启用“开机自启”,还是显示添加快捷方式失败
麻烦失败弹窗截个图,我看看
刚试了下,又可以启用“开机自启”了。
哈哈,😄我们一般不关机。
Win10,管理员权限运行,启用“开机自启”,显示 添加快捷方式失败 请以管理员权限运行软件,重新操作