我可以使用 REG_EXPAND_SZ 代替 REG_SZ 来表示 shell 文件夹的位置吗

我可以使用 REG_EXPAND_SZ 代替 REG_SZ 来表示 shell 文件夹的位置吗

我正在重新排列 Windows 7 中的一些 shell 文件夹,以利用 Dropbox 保持一组机器同步。

我想创建一个 .reg 文件,以便可以用来更新这些文件夹的位置,而不是从 UI 手动更改它们,但我不想每次都依赖相同的主文件夹路径。

所以我的问题是,是否可以HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders用 REG_EXPAND_SZ 值替换 REG_SZ 值,指定偏移量%HOME%而不是精确路径?

答案1

啊,忽略这个答案的其余部分。你那里的注册表项毫无用处。惯于使用你的 shell 文件夹更改任何内容。哎呀,那里甚至还有一个值:

替代文本

你看,该键存在的原因和 shell 文件夹的位置存储在注册表中的原因在于它们最初存储在那里。但由于存在一种记录的方法来获取它们,因此这是一个实现细节。Explorer 可能仍会为您更新这些值以方便您,因为许多应用程序错误地依赖该键,但无论如何你都不应该使用它。回到主题,由于这只是一个静态列表,反映(或不反映)Explorer 在其他地方存储的内容,因此更改不会以任何方式影响系统。Explorer 根本不关心它。想象一下,每次你去某个地方时,你都会在一张纸条上写下你所在的位置。当别人在那张纸上写字时,你会神奇地出现在另一个地方吗?


至于 REG_SZ 到 REG_EXPAND_SZ:试试看,但不要以为它会神奇地起作用。注册表本身不关心 REG_SZ 和 REG_EXPAND_SZ–这一切都是由读取数据的应用程序完成的。由于这个值是 REG_SZ,我猜你不能只用 REG_EXPAND_SZ 替换它并让它工作。

答案2

只是一个建议:

为什么不编写 .bat 文件,而要编写可适应的 .reg 文件呢?
.bat 文件可以使用环境变量,也可以更改注册表。

请参阅以下文章:

使用 Reg.exe 从命令提示符管理 Windows 注册表
批处理文件 - 使用 REGEDIT 添加、读取或删除注册表值

相关内容