我要做一个安装程序,其中要把一个文件Copy到AutoCAD的安装目录下,怎么办?应该要读注册表的吧,现在我知道可以通过读取这个键值来获取:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\acad.exe
把读出来的值放到一个变量,比如szNewDir里,然后就好办了
现在关键我不知道如何在Install Shield的脚本语言里写代码获得这个键值,请大家帮帮我!

解决方案 »

  1.   

    16.14. 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指向的字符串列表。
      

  2.   

    如果上面不行,留个email,我给你发Installshield的库函数文档
      

  3.   

    非常谢谢楼上的,现在可以读取了,不过还有个问题,我现在读出来的svValue的值是:
    C:\PROGRA~1\COMMON~1\AUTODE~1;D:\ACAD2000\;D:\ACAD2000\SUPPORT;D:\ACAD2000\FONTS
    实际上我只需要其中的D:\ACAD2000;就行了,如何实现?
    另外,我的E-mail是[email protected],麻烦你再把那个库函数文档都发给我吧,谢谢了