使用inno setup 操作注册表无非就是写入、查询、删除
//查询path,放入变量oldPath中
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'path', oldPath);
//写入字符xxx到环境变量path中,当然,xxx既可以是单纯的字符串,也可以是字符串变量
//删除环境变量path
RegDeleteValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment','path');
上面的内容网上都有,不啰嗦,关于操作环境变量时需要注意一点:就是环境变量的安装过程中不生效的问题,即值是写入了,但是没有生效。这就导致了如果后面的操作可以查看这个值,但是不能依赖这个值的生效,比如mysql的注册服务、tomcat的注册服务等等。举个例子:你不能先将其bin目录写入环境变量,然后直接使用形如
Exec(‘mysqld install mysql ’, '', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);
ShellExec('open' , ExpandConstant('{cmd}'), '/c mysqld install mysql ', '',SW_HIDE, ewWaitUntilTerminated, ErrorCode);这些命令来依赖环境变量中刚刚写入的msyql_home\bin
因为那个安装过程中写入的环境变量没有生效。
解决方法:直接切换到bin目录下去执行,或干脆直接使用完整的bin路径去执行bin下的命令