MsiQueryProductState

说明:
查询MS产品的安装状态
语法:
INSTALLSTATE MsiQueryProductState(  _In_  LPCTSTR szProduct );

product codes:

Visual C++ 2005 runtime files

Visual C++ 2005 SP1 runtime files

Visual C++ 2005 SP1 ATL Security Update runtime files

Visual C++ 2005 SP1 MFC Security Update runtime files

Visual C++ 2008 runtime files

Visual C++ 2008 SP1 runtime files

Visual C++ 2008 SP1 ATL Security Update runtime files

Visual C++ 2008 SP1 MFC Security Update runtime files

Visual C++ 2010 redistributable package product codes

Visual C++ 2010 SP1 redistributable package product codes

返回值:
安装状态 返回整数值 含义
INSTALLSTATE_INVALIDARG -2 无效的参数传递给该函数。
INSTALLSTATE_UNKNOWN -1 不公布或者未安装该产品。
INSTALLSTATE_ADVERTISED 1 该产品已公布但尚未安装。
INSTALLSTATE_ABSENT 2 不同的用户安装该产品。
INSTALLSTATE_DEFAULT 5 为当前用户安装该产品。

例子:
using   System ;
using   System.Runtime.InteropServices ;

public   class   QueryProductState
{
   [DllImport("msi.dll")]
    private   static   extern   INSTALLSTATE   MsiQueryProductState ( string   product ); 

    public   static   void   Main ( string []   args )
    {
        INSTALLSTATE   state   =   MsiQueryProductState ( "{11111111-2222-3333-4444-555555555555}" );

        Console . WriteLine ( state );
    }
}

其他:

Visual C++ 2010 redistributable package detection registry values




替代用的批处理:
@echo off
set "HKLMU=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
::::: 判断系统是否已经安装了 Visual C++ 2005 (包括所有版本) bbs.bathome.net By:FastSLZ
::::: 代码能实现判断X86、X64、IA64各版本的Visual C++ 2005,正确率99%除非微软发布新版本Visual C++ 2005
::::: 有就跳过安装Visual C++ 2005,没有则先安装。
reg query %HKLMU%\{A49F249F-0C91-497F-86DF-B2585E8E76B7}>nul 2>nul&&set VC2005=Microsoft Visual C++ 2005 Redistributable X86
reg query %HKLMU%\{7299052B-02A4-4627-81F2-1818DA5D550D}>nul 2>nul&&set VC2005=Microsoft Visual C++ 2005 SP1 Redistributable X86
reg query %HKLMU%\{837b34e3-7c30-493c-8f6a-2b0f04e2912c}>nul 2>nul&&set VC2005=Microsoft Visual C++ 2005 SP1 Redistributable ATL Security Update X86
reg query %HKLMU%\{6E8E85E8-CE4B-4FF5-91F7-04999C9FAE6A}>nul 2>nul&&set VC2005=Microsoft Visual C++ 2005 Redistributable X64
reg query %HKLMU%\{071C9B48-7C32-4621-A0AC-3F809523288F}>nul 2>nul&&set VC2005=Microsoft Visual C++ 2005 SP1 Redistributable X64
reg query %HKLMU%\{6CE5BAE9-D3CA-4B99-891A-1DC6C118A5FC}>nul 2>nul&&set VC2005=Microsoft Visual C++ 2005 SP1 Redistributable ATL Security Update X64
reg query %HKLMU%\{03ED71EA-F531-4927-AABD-1C31BCE8E187}>nul 2>nul&&set VC2005=Microsoft Visual C++ 2005 Redistributable IA64
reg query %HKLMU%\{0F8FB34E-675E-42ED-850B-29D98C2ECE08}>nul 2>nul&&set VC2005=Microsoft Visual C++ 2005 SP1 Redistributable IA64
reg query %HKLMU%\{85025851-A784-46D8-950D-05CB3CA43A13}>nul 2>nul&&set VC2005=Microsoft Visual C++ 2005 SP1 Redistributable ATL Security Update IA64
if defined VC2005 (echo %VC2005% 已安装!&ping -n 3 127.1>nul) else (goto 2005Install)
:::::这里你要做的事
goto:eof
:2005Install
:::::这里还可以精确判断何种版本的Visual C++ 2005,该不该更新到最新的。
:::::最新的Visual C++ 2008是Microsoft Visual C++ 2005 SP1 Redistributable ATL Security Update ***
:::::各版本下载地址 http://www.microsoft.com/downloads/details.aspx?FamilyID=766a6af7-ec73-40ff-b072-9112bab119c2&DisplayLang=zh-cn
echo 正在安装 Microsoft Visual C++ 2005 Redistributable
vcredist_x86.exe /q
goto:eof


@echo off
set "HKLMU=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
::::: 判断系统是否已经安装了 Visual C++ 2008 (包括所有版本) bbs.bathome.net By:FastSLZ
::::: 代码能实现判断X86、X64、IA64各版本的Visual C++ 2008,正确率99%除非微软发布新版本Visual C++ 2008
::::: 有就跳过安装Visual C++ 2008,没有则先安装。
reg query %HKLMU%\{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 Redistributable X86
reg query %HKLMU%\{9A25302D-30C0-39D9-BD6F-21E6EC160475}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 SP1 Redistributable X86
reg query %HKLMU%\{1F1C2DFC-2D24-3E06-BCB8-725134ADF989}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 SP1 Redistributable ATL Security Update X86
reg query %HKLMU%\{350AA351-21FA-3270-8B7A-835434E766AD}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 Redistributable X64
reg query %HKLMU%\{8220EEFE-38CD-377E-8595-13398D740ACE}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 SP1 Redistributable X64
reg query %HKLMU%\{4B6C7001-C7D6-3710-913E-5BC23FCE91E6}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 SP1 Redistributable ATL Security Update X64
reg query %HKLMU%\{2B547B43-DB50-3139-9EBE-37D419E0F5FA}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 Redistributable IA64
reg query %HKLMU%\{5827ECE1-AEB0-328E-B813-6FC68622C1F9}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 SP1 Redistributable IA64
reg query %HKLMU%\{977AD349-C2A8-39DD-9273-285C08987C7B}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 SP1 Redistributable ATL Security Update IA64
if defined VC2008 (echo %VC2008% 已安装!&ping -n 3 127.1>nul) else (goto 2008Install)
:::::这里你要做的事
goto:eof
:2008Install
:::::这里还可以精确判断何种版本的Visual C++ 2008,该不该更新到最新的。
:::::最新的Visual C++ 2008是Microsoft Visual C++ 2008 SP1 Redistributable ATL Security Update ***
:::::各版本下载地址 http://www.microsoft.com/downloads/details.aspx?FamilyID=2051a0c1-c9b5-4b0a-a8f5-770a549fd78c&DisplayLang=zh-cn
echo 正在安装 Microsoft Visual C++ 2008 Redistributable
vcredist_2008_x86.exe /q
goto:eof

参考资料:
http://msdn.microsoft.com/en-gb/library/aa370363.aspx
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值