[inno setup]学习入门之二 关于写入注册表的一点注意

来源:互联网 发布:淘宝流量提升软件 编辑:程序博客网 时间:2024/06/16 13:13

  使用inno setup 操作注册表无非就是写入、查询、删除

//查询path,放入变量oldPath中

  RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'path', oldPath);

 //写入字符xxx到环境变量path中,当然,xxx既可以是单纯的字符串,也可以是字符串变量

  RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', '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下的命令

原创粉丝点击