误移系统文件夹恢复
文档, 视频, 图片等。
1 前言
这是我在 Notion 写下的第一篇较长的问题解决记录,也是我养成”记录解决过程”这一习惯的起点,既为分享,也留作日后自查。
写完之后,我用 Notion 记录的频率明显提高。此外,深究这个问题让我第一次接触到 VSCode,从此初识 IDE,也由此燃起了对编程的兴趣。
总结 部分里提炼了核心结论与最简解决方案;正文中则详细记录了问题的发现与探索过程。
2 总结
2.1 问题
Win10 系统文件夹(Shell Folders,如 桌面、文档、图片)被意外移动至磁盘根目录(如 D:\、E:\),如何恢复?
2.2 解决方法
- 新建目标文件夹(如
E:\Users\UserName\Videos\) - 修改注册表
- 按
Win + R输入regedit - 导航至
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders - 找到数据值为磁盘根目录(如
E:\)的条目 - 将其改为新建文件夹的路径(如
E:\Users\UserName\Videos\) - 保存后重启电脑
- 按
- 显示系统隐藏文件
- 打开目标文件夹
- 进入
文件 > 选项 > 查看 - 勾选
⏺ 显示隐藏的文件、文件夹或驱动器 - 取消勾选
◻ 隐藏受保护的操作系统文件
- 修改
desktop.ini
desktop.ini
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,<显示名称资源编号>
IconResource=%SystemRoot%\system32\imageres.dll,<图标资源编号>
<其他项...>注:修改完成后,记得重新隐藏步骤 3 中显示的系统文件。
3 问题: 误移系统文件夹
某天整理 C 盘,发现 C:\Users\<用户名> 下还有一批系统文件夹未迁移至 E 盘,便打算一并处理。
我打开 保存的游戏 的 属性 > 位置,把路径 C:\Users\Lenovo\Saved Games 直接改成 E:\,再点击 移动。
结果 保存的游戏 就此消失——我这才意识到,自己把 E 盘根目录本身设成了目标路径。我开始搜索解决方案,但结果与预期不符。
于是我改用其他系统文件夹作为关键词:视频(名字太常见,结果嘈杂)、3D 对象(名字独特,但知名度低)、桌面(情况特殊,方案未必通用)等。
几经尝试,最终锁定了解决方案:修改注册表。
4 解决: 修改注册表
按照以下步骤执行:
在 E 盘新建目标文件夹
E:\Saved Games,用于存放保存的游戏。按
Win + R打开运行窗口,输入regedit打开注册表编辑器。
定位并修改路径
导航至以下路径:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
(注意:是 User Shell Folders,不是 Shell Folders)找到数据值为
E:\的条目,将其改为E:\Saved Games。
(务必先建好文件夹,再改注册表)
- 重启电脑,验证结果
重启后按Win + R输入shell:SavedGames,若能跳转到E:\Saved Games,则恢复成功。
此时功能已恢复,但文件夹仍是默认图标,中文名称 保存的游戏 也未显示(见 图 1)。以下步骤用于恢复其外观。
4.1 恢复图标
我首先尝试手动更改文件夹图标。
找到一篇文章,介绍了 Windows 系统图标的存储位置。
通过 属性 > 自定义 > 更改图标 发现,当前图标来自 SHELL32.dll,但其中并没有 保存的游戏 对应的图标,由此推断,系统还有其他存放图标的 DLL 文件。
参照文章列出的多个 DLL 逐一排查后,最终在 imageres.dll 中找到了 保存的游戏 的图标,以及 桌面、视频 等图标。
将图标指向正确的资源后,图标恢复正常。但文件夹的显示名称仍未还原为 保存的游戏。
4.2 恢复文件名
搜索”如何让文件名与显示名不同”,找到了如下方案:
操作步骤:
- 勾选”显示隐藏的项目”,点击 选项。
- 点击”查看” 标签页。
- 取消勾选”隐藏受保护的操作系统文件”,点击 是。
此时 Saved Games 文件夹内出现 desktop.ini 文件。
用记事本打开,可见其中 IconResource 条目已指向 imageres.dll,正是上一步恢复的图标。
按照教程,在 desktop.ini 文件中新增如下内容(图 22):
LocalizedResourceName=保存的游戏但保存后文件名出现乱码(图 23):英文能正常显示,中文却变成乱码,说明文件编码格式不对。
方法1:修改编码方式1
记事本右下角显示当前编码为 UTF-8,而经查证,desktop.ini 的编码应为 UTF-16 LE。
为避免中文乱码,在填好中文名称后,点击 文件 > 另存为。
将 保存类型 设为 所有文件(*.*),编码 设为 UTF-16 LE,保存并替换原文件。
稍等片刻,文件名称即恢复。
方法2:填写资源索引
除了修改编码,还可以引用资源索引。
查看未受影响的 视频 文件夹的 desktop.ini,发现其显示名称并非直接写入中文字符串,而是引用 shell32.dll 中的资源索引(格式为 @%SystemRoot%\system32\shell32.dll,-XXXXX)。
于是我着手搜索 shell32.dll 中的名称资源编号。
但搜索结果只涉及图标资源,没有名称编号。
转而向 AI 求助:
但 ChatGPT 给出的编号是虚构的。
注:-21810 对应的是”链接”,并非”保存的游戏”。
我又追问如何查看 shell32.dll 的内容,ChatGPT 推荐使用 Visual Studio。
编程零基础的我,手滑下载成了 Visual Studio Code。正是这一误打误撞,让我首次接触到 IDE。后来课上老师发现我用 VSCode 而非 Jupyter 写作业,追问缘由,我便掏出了这篇文章 。
按 ChatGPT 指示,在 Visual Studio 中新建解决方案,加载 C:\Windows\System32\shell32.dll 查看资源目录。
然而 Visual Studio 只能显示资源目录结构,无法直接确认条目编号;加之 shell32.dll 内容庞大,逐条查找并不现实。
最后我只好直接对照另一台未修改过的电脑上的 desktop.ini。正确编号原来是 -21814,与之前试过的 -21810 仅差 4,再多试几次或许就碰对了。
在 保存的游戏 文件夹的 desktop.ini 文件中新增如下内容:
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21814除 保存的游戏 外,其他系统文件夹的显示名称资源编号可在 表 1 中查询。
“保存的游戏” —— 堂堂复活!
至此,图标与显示名称均已恢复默认。
教训:迁移系统文件夹时,只修改路径中的盘符,不要将根目录直接设为目标路径。
附录:系统文件夹对应资源
将下表 (表 1) 中的名称资源编号和图片资源编号填入以下代码中:
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,<显示名称资源编号>
IconResource=%SystemRoot%\system32\imageres.dll,<图标资源编号>以 图片 文件夹为例:
Pictures\desktop.ini
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779
IconResource=%SystemRoot%\system32\imageres.dll,-113注:
联系人和3D对象的显示名称资源并来自其他 DLL 文件 (见 脚注)。








































