如何优雅的更改存档位置

实用技术存档
浏览数 - 547发布于 - 2025-10-13 - 01:33

如何优雅的更改存档位置,默认存档savedata一般在我的文档或者AppData里,如何更改到游戏文件夹下的savedata中。如何大规模修改或者更方便大规模修改。😀

本文版权遵循 CC BY-NC 协议 本站版权政策

10 条回复

ArisuMika
发布于 2025-10-13 - 01:40

可以试试看 创建符号链接 我还没试过,可以搜索如何使用创建符号链接。

要大规模的话需要采用脚本,或者使用 Link Shell Extension (一个工具软件)

茅羽耶
发布于 2025-10-13 - 20:43

批量修改应该是不太现实的。至于符号链接就纯自欺欺人了。至于有没有修改的方法,我只能说不知道。

ArisuMika
发布于 2025-10-13 - 23:36 (编辑于 2025-10-13 - 23:37)
回复 @茅羽耶#2

批量修改应该是不太现实的。至于符号链接就纯自欺欺人了。至于有没有修改的方法,我只能说不知道。

我做过测试,创建符号链接的方法发现是可行的。

当游戏去默认路径读取存档时,操作系统会通过符号链接自动将它“传送”到新位置。

这里以WillPlus的僕と彼女のご奉仕同棲为例,该游戏存档默认的位置是 C:\Users\Username\Saved Games\WillPlus\僕と彼女のご奉仕同棲 THEもーしょん

将原来的存档剪切到savedata文件夹(我这里的位置是F:\gal_​saved\僕と彼女のご奉仕同棲 THEもーしょん\savedata)

随后通过管理员权限下的cmd or powershell 创建符号链接 :

Shell
mklink /d "C:\Users\Username\Saved Games\WillPlus\僕と彼女のご奉仕同棲 THEもーしょん" "F:\gal_​saved\僕と彼女のご奉仕同棲 THEもーしょん\savedata"

随后创建成功会输出以下信息:

Shell
为 C:\Users\Username\Saved Games\WillPlus\僕と彼女のご奉仕同棲 THEもーしょん <<===>> F:\gal_saved\僕と彼女のご奉仕同棲 THEもーしょん\savedata 创建的符号链接

最终重新打开游戏会发现存档读取成功
我在savedata文件夹删除了一个存档后,重新进入游戏会发现存档也跟着删除

我在游戏内新增一个存档后,发现savedata文件夹里面也跟着多出了一份存档文件

当然,带着存档转移设备的话要重新建立符号链接,这个时候随带一个bat脚本是很方便的。

我也只测试了这一个游戏,不能保证存档机制普遍可以兼容

茅羽耶
发布于 2025-10-14 - 22:24
回复 @ArisuMika#3

符号链接和linux的软连接几乎是一样的,你要这样子做我搞不懂你的用意是什么。每一个游戏路径不同不说,迁移也不能直接复制粘贴。如果要把存档改到游戏文件夹下,我倾向的用意是程序读取游戏文件夹下的存档文件,而不是软连接这种障眼法,如此一来可以直接打包整个游戏,就像是绿色版软件那样实现去中心化。然而这种程序层面的修改很难做到不说,galgame的游戏引擎千奇百怪,你要怎么统一?

devseed
发布于 2025-10-15 - 00:20
回复 @茅羽耶#4

其实有个一劳永逸的方法, 去hook NtCreateFile一堆函数, 发现存储在appdata路径下, 重定向到游戏目录。

参考我这个项目, https://github.com/YuriSizuku/win-Override

虽然我这个是为了解决汉化共存的通用方法, 也可以拓展到存档重定向上。 

ArisuMika
发布于 2025-10-15 - 00:42
回复 @茅羽耶#4

我完全同意也十分期望能够有去中心化的理想化处理,如果能让游戏程序本身直接读取游戏文件夹下的存档,那当然是最理想的‘绿色化’方案

然而这是很难做到的,面对各种引擎更是无法统一

我的意思是在 ‘我们无法修改游戏程序’ 前提下,找到一个折衷的管理方案

我觉得我更倾向是为了管理游戏和存档,所有的存档都集中在 游戏根文件夹里。之后有用的话就不用再跑到 AppData、我的文档、Saved Games 等各种犄角旮旯里去翻存档。

可能在一开始建立的时候比较麻烦

迁移的时候重新执行一遍 mklink 命令,就可以保证存档不丢失。(如果会做批处理脚本可以用在全CG存档的分发上,减轻此游戏存档迁移的操作复杂度和降低门槛)

当然,这是我个人的想法。

茅羽耶
发布于 2025-10-15 - 22:13
回复 @devseed#5

hook和重定向,那游戏读取的地址是他的目录而不是Document吗?创建存档和修改存在之类的自然好办,hook读取存档的行为是如何做到的?  

另外这个软件最终的发布方式是patch吗?也就是将目标游戏文件重新打包,存档是否可以直接使用。如果可以的话确实很不错,是一个值得推广的工具,至少对于资源发布者来说。  

对于普通用户来说,这个工具过于专业了,用起来增加了不必要的麻烦。

茅羽耶
发布于 2025-10-15 - 22:16
回复 @ArisuMika#6

你这种情况直接使用快捷方式就可以了,毕竟galgame在桌面端多数只支持windows,不用考虑兼容性问题。

devseed
发布于 2025-10-16 - 22:53
回复 @茅羽耶#7

你可以理解成一个用户态的filter, 就是在用户态替换syscall的对应字符串, 实现重定位功能。 

devseed
发布于 2025-10-16 - 22:54
回复 @茅羽耶#7

不用重新打包, 可以用version.dll或者loader方式将dll注入exe

(。>︿<。) 已经一滴回复都不剩了哦~