You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET使用File A Sync实现的自动更新在C盘无法启动下载问题

问题根因

该问题是Windows系统UAC权限限制导致:Windows Vista及更高版本中,C:\Program Files、C:\根目录等路径属于系统保护路径,普通权限运行的程序没有写入权限。你当前的更新逻辑直接把新版本文件下载到程序安装目录,当程序安装在C盘的受保护路径下时,写入操作会被系统直接拦截,而其他盘符的普通目录没有这类权限限制,所以功能正常。

修复方案
  • 方案1:配置程序默认请求管理员权限(改动最小)

    操作步骤如下:

    1. 右键VB.NET项目,选择「属性」,切换到「应用程序」选项卡
    2. 点击「查看Windows设置」,打开项目的app.manifest配置文件
    3. 找到<requestedExecutionLevel>节点,替换为以下内容:
    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
    
    1. 重新编译打包程序即可,后续程序运行时会自动请求管理员权限,获得C盘受保护目录的写入权限。
  • 方案2:调整更新文件存储路径(无需强制管理员启动)

    如果你不想让程序每次启动都弹出UAC授权提示,可以调整更新流程:

    1. 先将新版本安装包下载到当前用户的临时目录,对应路径可通过Path.GetTempPath()获取,该路径普通用户权限默认有完整读写权限
    2. 下载完成校验文件完整性后,再临时申请管理员权限,将文件从临时目录复制到程序安装目录完成替换
    3. 替换完成后删除临时目录的安装包即可。
现有代码优化建议

当前代码中手动拼接路径的写法存在出错风险,建议将所有类似Application.StartupPath & "\Changer NewVersion.exe"的逻辑,替换为Path.Combine(Application.StartupPath, "Changer NewVersion.exe")的写法,可避免多斜杠、路径分隔符不匹配等异常问题。

内容的提问来源于stack exchange,提问作者Meno The Programmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 22:06:00