Press "Enter" to skip to content

在注册表中使用相对路径(环境变量)代替绝对路径

Last updated on 2022/10/29

注册表的数据类型

这样的需求绝大部分人是不需要的,所以在百度上很难找到相关解答,不过既然我写了这篇文章,说明我已经找到了解决方案。

方案来自于:http://wuyou.net/forum.php?mod=viewthread&tid=378538

其实这个问题只是源自于我们对注册表中各种数值类型不了解导致的。我们在注册表中新建一个项后,会产生一个普通字符串类型(REG_SZ)的空默认数值,而这种普通字符串类型的数值中是不会识别相对路径的,它会将所以内容当做绝对路径使用,这也就是为什么直接填入相对路径会出现权限错误,因为这个路径根本不存在。

解决方案很简单,既然普通字符串类型不支持,换一个支持的不就好了,可扩展字符串(REG_EXPAND_SZ)就是我们需要的,听其名字就知道是它在普通字符串类型上支持更多扩展功能,所以只要将数值类型修改为可扩展字符串类型就可以使用双百分号(例如%HOME%)表示的环境变量了。

这样的话还会引出另一个问题,上面我提到,新建的项目会创建一个普通字符串类型的空默认值,如果你不需要修改这个默认值,直接新建一个可扩展字符串类型的值就可以了,而如果需要修改这个默认值的话,你会发现系统自带的注册表编辑器无法修改这个默认值的数值类型。

解决方案有两个,一个是利用.reg文件指定@值的数值类型,另一个是使用一款强大的注册表编辑器“Registry Workshop”,它可以直接修改默认值的类型。这个问题困扰了我半个多月,说明我还只是一个小白,而希望这篇文章对你能够有所帮助。


    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注