InstallShield的注册表操作

帮朋友做一个安装盘,需要往注册表里面写东东,使用了一下InstallShield的注册表操作,感觉还是满强大的

首先,我要设置一下操作的注册表项都在哪个目录下,比如都在HKEY_LOCAL_MACHINE下,那我就调用下面这句话,注意,这句话一定要在所有读写注册表项之前进行,并且只调用一次即可:

RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);

然后,我要检查一下我要操作的注册表项存不存在,我可以调用这样一句话:

RegDBKeyExist (regDbKey)

这个方法返回值为0表示regDbKey在注册表中存在,返回值<0表示不存在。

如果不存在的话,我要创建这个项并在其中写入一下名字为Sanc的字段,并赋以初值,那么我调用这句话就行了:

RegDBSetKeyValueEx(regDbKey, "Sanc", REGDB_STRING, "10", -1)

因为我写入的是字符串值"10",所以最后一个参数为-1就可以了,如果我写入的是一个整型值或其它数值型值的话最后一个参数就要说明这个值的长短。

需要注意的是,如果相应的注册表项不存在的话这个方法会自动在注册表中创建相应的项,不用显式的调用RegDBCreateKeyEx (regDbKey, "")了。不过通用RegDBSetKeyValueEx创建的项要是想在卸载时自动卸掉的话,就必须在InstallShield IDE的Registry中注册这个项。

同样,要是更新值的话也是用这个方法。

这个方法如果返回0的话表示成功,返回<0的值表示失败(好像InstallShield的N多方法都是这样)

那么,如何获取一个值呢?用下面的方法就可以:

RegDBGetKeyValueEx(regDbKey, "Sanc", regType, regValue, regSize)

注意,这个方法中后3个参数都是输出参数,regTyep表示类型,regValue表示值,regSize表示大小,返回值的含义同样遵守上面的法则。

最后还有一点十分重要的,就是当你的程序中途退出时,不要调用abort方法,而要调用exit方法,要不前面所做的一切注册表操作都将化为乌有。原因是abort操作会执行Uninstall操作,删除前面有注册表中创建的值.

你可能感兴趣的:(String,ide)