Code
RegDBGetKeyValueEx
语法:RegDBGetKeyValueEx (szKey, szName, nvType, svValue, nvSize);
说明:RegDBGetKeyValueEx函数检索注册表中一个指定项下一个特定数值名的值。缺省时,InstallShield假定该项是HKEY_CLASSES_ROOT下的一个子项。你可以用RegDBSetDefaultRoot来指定另一个开关键。
RegDBGetKeyValueEx是一个通用注册表相关函数,设计为可工作于所有注册表项,包括那些由特殊注册表相关函数处理的项。
参数:
szKey
指定其值要被检索的项的名称。用一个双反斜杠来分隔子项中的不同层。
szName
指定在szKey下其值要被检索的数值的数值名。要检索项的缺省值,则传递一个空字符串。
nvType
返回下列预定义常量之一,它们标识在svValue返回的数据的类型:
请参阅15.12中该部分的说明。
svValue
返回由szKey和svName 指定的值。注意一个数值型值以一个字符串返回。
nvSize
以字节数返回在svValue返回的值的大小。
返回值:
0:表明函数成功检索该值。
< 0:表明函数未能检索该值。
注解:
一个Windows NT平台上,当检索REGDB_STRING_MULTI数据类型时,带空字符串为参数调用StrGetTokens来将多个以空字符串为中止的字符串分析到一个字符串列表。也就是,如果svValue在调用RegDBGetKeyValueEx后有多个结果字符串,StrGetTokens( listID, svValue, "")可以被使用来分析字符串并把它们放到一个由listID指向的字符串列表。
function OnFirstUIAfter()
STRING szTitle, szMsg1, szMsg2, szOption1, szOption2,svValue;
NUMBER bOpt1, bOpt2,nvSize,nvType;
begin
nvType=REGDB_STRING;
// SdShowMsg("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_{5F0F1795-20A4-4DB2-9163-8166B9A6297F}",TRUE);
// Delay(1);
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
//RegDBSetKeyValueEx("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_{5F0F1795-20A4-4DB2-9163-8166B9A6297F}","UninstallString",REGDB_STRING,INSTALLDIR^"Elane.installer.UnInstaller.exe",-1);
RegDBGetKeyValueEx("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_{5F0F1795-20A4-4DB2-9163-8166B9A6297F}","UninstallString",nvType,svValue,nvSize);
SdShowMsg(svValue,TRUE);
Delay(20);
// SdShowMsg("",FALSE);
Disable(STATUSEX);
bOpt1 = FALSE;
bOpt2 = FALSE;
szMsg1 = SdLoadString(IFX_SDFINISH_MSG1);
SdFinishEx(szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2);
end;
RegDBGetKeyValueEx
语法:RegDBGetKeyValueEx (szKey, szName, nvType, svValue, nvSize);
说明:RegDBGetKeyValueEx函数检索注册表中一个指定项下一个特定数值名的值。缺省时,InstallShield假定该项是HKEY_CLASSES_ROOT下的一个子项。你可以用RegDBSetDefaultRoot来指定另一个开关键。
RegDBGetKeyValueEx是一个通用注册表相关函数,设计为可工作于所有注册表项,包括那些由特殊注册表相关函数处理的项。
参数:
szKey
指定其值要被检索的项的名称。用一个双反斜杠来分隔子项中的不同层。
szName
指定在szKey下其值要被检索的数值的数值名。要检索项的缺省值,则传递一个空字符串。
nvType
返回下列预定义常量之一,它们标识在svValue返回的数据的类型:
请参阅15.12中该部分的说明。
svValue
返回由szKey和svName 指定的值。注意一个数值型值以一个字符串返回。
nvSize
以字节数返回在svValue返回的值的大小。
返回值:
0:表明函数成功检索该值。
< 0:表明函数未能检索该值。
注解:
一个Windows NT平台上,当检索REGDB_STRING_MULTI数据类型时,带空字符串为参数调用StrGetTokens来将多个以空字符串为中止的字符串分析到一个字符串列表。也就是,如果svValue在调用RegDBGetKeyValueEx后有多个结果字符串,StrGetTokens( listID, svValue, "")可以被使用来分析字符串并把它们放到一个由listID指向的字符串列表。
function OnFirstUIAfter()
STRING szTitle, szMsg1, szMsg2, szOption1, szOption2,svValue;
NUMBER bOpt1, bOpt2,nvSize,nvType;
begin
nvType=REGDB_STRING;
// SdShowMsg("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_{5F0F1795-20A4-4DB2-9163-8166B9A6297F}",TRUE);
// Delay(1);
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
//RegDBSetKeyValueEx("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_{5F0F1795-20A4-4DB2-9163-8166B9A6297F}","UninstallString",REGDB_STRING,INSTALLDIR^"Elane.installer.UnInstaller.exe",-1);
RegDBGetKeyValueEx("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\InstallShield_{5F0F1795-20A4-4DB2-9163-8166B9A6297F}","UninstallString",nvType,svValue,nvSize);
SdShowMsg(svValue,TRUE);
Delay(20);
// SdShowMsg("",FALSE);
Disable(STATUSEX);
bOpt1 = FALSE;
bOpt2 = FALSE;
szMsg1 = SdLoadString(IFX_SDFINISH_MSG1);
SdFinishEx(szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2);
end;