如何确定注册表中uninstall键下一个子键的键值是有效的卸载?卸载工具可以探知一个键值是无效的,是什么原理?那个值大多是卸载文件的路径,这个可以根据路径的有效性来判断,不过有的值类似这样:RunDll32 advpack.dll,LaunchINFSection E:\WINNT\INF\spchapi.inf, Uninstall 请问这个要如何判断的

解决方案 »

  1.   

    parse别人的inf或者log文件似乎不大可能,怀疑这些软件对后述斜载项目的验证合理性?
      

  2.   

    不可能去判断别人的inf文件的内容正确性吧,不过根据注册表提供的信息,应该可以判断那些文件是否存在,这样也就足够了。
    所以现在我的问题就是
    如何正确分析UninstallString,将该被判断是否存在的文件名称及其路径分析出来,以便判断完成卸载的必须文件是否真实存在
      

  3.   

    我的想法:
    一般调用某些系统自带的工具,比如上面的advpack.dll,或者winnt下面的某些exe形式的unist一类的工具,都是处于系统路径下面的,因而不会带有诸如':' or '\'之类的特殊字符,对它们附近的字符串(也即inf、log文件)验证fileexist。
      

  4.   

    RunDll32 advpack.dll,LaunchINFSection E:\WINNT\INF\spchapi.inf, Uninstall
    以这个串来说,作为间隔符号的,当中有逗号 还有空格,逐一取得这些部分应该不是问题,可是有些串还是很不明白的,首先,串所包含的部分到底有多少是不能确定的,所以分解出的哪个部分才是我所需要的,还有象现在提到的这个,在文件后有“, uninstall”是什么意思?
    关键还是对uninstallstring的语义不太明白