hiroi-sora / Umi-OCR_v2

结束和新的开始
MIT License
933 stars 73 forks source link

“开机自启”无法启用 #27

Closed netsonicyxf closed 11 months ago

netsonicyxf commented 11 months ago

Win10,管理员权限运行,启用“开机自启”,显示 添加快捷方式失败 请以管理员权限运行软件,重新操作

hiroi-sora commented 11 months ago

用管理员权限打开软件,才可以添加开机启动项。

右键 Umi-OCR.exe → 以管理员身份运行 → 重新添加开机自启

netsonicyxf commented 11 months ago

如顶楼所述,已经试过“管理员权限运行,启用“开机自启””‘——失败

hiroi-sora commented 11 months ago

很抱歉,之前误解了你的意思。

那么请查看一下:

  1. Umi-OCR 可以创建桌面快捷方式吗?
  2. 你电脑上是否存在此路径? C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
  3. 如果存在上述路径,尝试将桌面快捷方式拷贝进该目录。能否成功?
  4. 打开命令提示符(win+R,输入cmd,回车)。在命令行输入 echo %ProgramData%。显示的值是否为C:\ProgramData
zhengbolun1218 commented 11 months ago

win11 22H2 有同样的问题。可以创建桌面快捷方式,但是以管理员权限运行后,仍然无法添加开机自启和开始菜单。

hiroi-sora commented 11 months ago

@zhengbolun1218 如果可以,麻烦测试一下楼上的步骤,看看 Startup 目录是否正常。

netsonicyxf commented 11 months ago

@hiroi-sora 可以手动把快捷方式放到“启动”文件夹实现开机启动,但程序里设置就不行

hiroi-sora commented 11 months ago

好的。如果可以,请做以下测试:

  1. 用记事本打开文件 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
  2. 将该函数,替换为下述内容:

    @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
  3. 重新以管理员权限启动软件,并添加开机自启。此时如果操作失败,会弹出一个弹窗,展示报错信息。 请将该弹窗截图给我。这个信息查明问题非常有用。

zhengbolun1218 commented 11 months ago

替换后,已成功设置选项。可以开机自启

hiroi-sora commented 11 months ago

我大概明白了。可能是文件名重复引起。

你可能以前用过旧版Umi-OCR并添加过开机自启,已经存在一个快捷方式。此时用新版Umi再添加新的快捷方式,就会存在文件冲突。

在一些系统中(我的测试环境),遇到冲突时,会让新的快捷方式文件强制覆盖掉旧的文件。但在你们的系统中,也许遇到冲突时会禁止执行操作。

我刚刚优化了创建代码,如果 Umi-OCR.lnk 已存在,则会创建 Umi-OCR (1).lnk 等带序号的快捷方式,避免文件名重复。

感谢测试~

netsonicyxf commented 11 months ago

预览版 dev 20231018 管理员权限启动,启用“开机自启”,还是显示添加快捷方式失败

hiroi-sora commented 11 months ago

麻烦失败弹窗截个图,我看看

netsonicyxf commented 11 months ago

刚试了下,又可以启用“开机自启”了。

e71828 commented 11 months ago

哈哈,😄我们一般不关机。