我现在想通过C#得到和Microsoft的“添加或删除程序”里面显示一样的软件列表
目前我找到的方式是读取注册表中的项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
但是这里的信息不完整,我安装的winrar,暴风影音都不在这显示。和“添加或删除程序”比较少了一些程序我是64位元的机器,我发现在:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall下面也同样有程序的列表,但和上面的列表不一样。而且会出现如"Office word,Office Excel"等细项我只想得到和“添加或删除程序”显示的列表一样,请高手提供个方法或思路。不胜感激。

解决方案 »

  1.   

    请楼上两位的提供个方向好嘛 jcyluck(C# + SQL 2005 QQ群:26096739) 
    API可以得到这样的信息嘛?是哪个API了?
      hongyelzg(风中过客) 
    我现在就是找的注册表
    可是出来的结果不是想要的。目前还不知道有什么别的键值可以帮助判断
     
      

  2.   

    MsiEnumProducts
    http://msdn2.microsoft.com/en-us/library/aa370101.aspx
    MsiEnumProductsEx
    http://msdn2.microsoft.com/en-us/library/aa370102.aspx
    MsiGetProductInfo
    http://msdn2.microsoft.com/en-us/library/aa370130.aspx
    MsiGetProductInfoEx
    http://msdn2.microsoft.com/en-us/library/aa370131.aspx
      

  3.   

    楼上的方法获得的是msi安装的一些信息和“添加或删除程序”显示的列表不一样
      

  4.   

    回复楼上
    wmi中无法获取到这样的信息。
      

  5.   

    回复楼上两位:注册表中的我列的两个位置可以全部列出软件的信息但问题是:
    1. 两个里面有重复,我想microsoft应该不是单纯的比较重复的就不加载。应该有更好的方式识别
    2. 会有word,excel等细项,如何合并成一样的总的。不需要各个安装的子项也列出来。
      

  6.   

    HKEY_LOCAL_MACHINE 里面的是所有用户的,你可能安装的时候 winrar,暴风影音 选的不是"任何人"  而是 "只有我" 使用.所以还要去
    HKEY_CURRENT_USER  找找, 64位的操作系统在具体哪个位置也不太清楚了....
      

  7.   

    回复楼上:
    我安装的winrar等信息在64位元的键值下有怎么把Office的细项过滤怎么就没有人提供一些意见了,呵呵