zoukankan      html  css  js  c++  java
  • 检测Office是否安装以及获取安装 路径 及安装版本 QQ,迅雷,旺旺 C#代码

    #region 检测Office是否安装 
    ///<summary> 
    /// 检测是否安装office 
    ///</summary> 
    ///<param name="office_Version"> 获得并返回安装的office版本</param> 
    ///<returns></returns> 
    public static bool IsInstallOffice(out string office_Version, out string office_Path) 
    { 
    bool result = false; 
    string str_OfficePath = string.Empty; 
    string str_OfficeVersion = string.Empty; 
    office_Version = string.Empty; 
    office_Path = string.Empty; 
    
    GetOfficePath(out str_OfficePath, out str_OfficeVersion); 
    if (!string.IsNullOrEmpty(str_OfficePath) && !string.IsNullOrEmpty(str_OfficeVersion)) 
    { 
    result = true; 
    office_Version = str_OfficeVersion; 
    office_Path = str_OfficePath; 
    } 
    return result; 
    } 
    
    ///<summary> 
    /// 获取并返回当前安装的office版本和安装路径 
    ///</summary> 
    ///<param name="str_OfficePath">office的安装路径</param> 
    ///<param name="str_OfficeVersion">office的安装版本</param> 
    private static void GetOfficePath(out string str_OfficePath, out string str_OfficeVersion) 
    { 
    string str_PatheResult = string.Empty; 
    string str_VersionResult = string.Empty; 
    string str_KeyName = "Path"; 
    object objResult = null; 
    Microsoft.Win32.RegistryValueKind regValueKind;//指定在注册表中存储值时所用的数据类型,或标识注册表中某个值的数据类型。 
    Microsoft.Win32.RegistryKey regKey = null;//表示 Windows 注册表中的项级节点(注册表对象?) 
    Microsoft.Win32.RegistryKey regSubKey = null; 
    try 
    { 
    regKey = Microsoft.Win32.Registry.LocalMachine;//读取HKEY_LOCAL_MACHINE项 
    if (regSubKey == null) 
    {//office97 
    regSubKey = regKey.OpenSubKey(@"SOFTWAREMicrosoftOffice8.0CommonInstallRoot", false);//如果bool值为true则对打开的项进行读写操作,否则为只读打开 
    str_VersionResult = "Office97"; 
    str_KeyName = "OfficeBin"; 
    } 
    if (regSubKey == null) 
    {//Office2000 
    regSubKey = regKey.OpenSubKey(@"SOFTWAREMicrosoftOffice9.0CommonInstallRoot", false); 
    str_VersionResult = "Pffice2000"; 
    str_KeyName = "Path"; 
    } 
    if (regSubKey == null) 
    {//officeXp 
    regSubKey = regKey.OpenSubKey(@"SOFTWAREMicrosoftOffice10.0CommonInstallRoot", false); 
    str_VersionResult = "OfficeXP"; 
    str_KeyName = "Path"; 
    } 
    
    if (regSubKey == null) 
    {//Office2003 
    regSubKey = regKey.OpenSubKey(@"SOFTWAREMicrosoftOffice11.0CommonInstallRoot", false); 
    str_VersionResult = "Office2003"; 
    str_KeyName = "Path"; 
    try 
    { 
    objResult = regSubKey.GetValue(str_KeyName); 
    regValueKind = regSubKey.GetValueKind(str_KeyName); 
    } 
    catch (Exception ex) 
    { 
    regSubKey = null; 
    } 
    } 
    
    if (regSubKey == null) 
    {//office2007 
    regSubKey = regKey.OpenSubKey(@"SOFTWAREMicrosoftOffice12.0CommonInstallRoot", false); 
    str_VersionResult = "Office2007"; 
    str_KeyName = "Path"; 
    } 
    objResult = regSubKey.GetValue(str_KeyName); 
    regValueKind = regSubKey.GetValueKind(str_KeyName); 
    if (regValueKind == Microsoft.Win32.RegistryValueKind.String) 
    { 
    str_PatheResult = objResult.ToString(); 
    } 
    } 
    catch (Exception ex) 
    { 
    LogHelper.WriteLogError(ex.ToString()); 
    //throw ex; 
    } 
    finally 
    { 
    if (regKey != null) 
    { 
    regKey.Close(); 
    regKey = null; 
    } 
    
    if (regSubKey != null) 
    { 
    regSubKey.Close(); 
    regSubKey = null; 
    } 
    } 
    str_OfficePath = str_PatheResult; 
    str_OfficeVersion = str_VersionResult; 
    } 
    #endregion

    同理,检测QQ、Fetion、360杀毒、IE浏览器,Chrome、Office 2003/2007/2010

    只需修改验证:

    regSubKey = regKey.OpenSubKey(@"SOFTWARETencentPlatForm_Type_List3", false);//如果bool值为true则对打开的项进行读写操作,否则为只读打开

    即可

    检测QQ是否已安装,通过注册表

    #region 检测QQ是否安装 
    public static bool isInstallQQ(out string QQVersion, out string QQPath) 
    { 
    bool result = false; 
    string str_QQPath = string.Empty; 
    string str_QQVersion = string.Empty; 
    QQVersion = string.Empty; 
    QQPath = string.Empty; 
    
    GetQQPath(out str_QQPath, out str_QQVersion); 
    if (!string.IsNullOrEmpty(str_QQPath) && !string.IsNullOrEmpty(str_QQVersion)) 
    { 
    result = true; 
    QQVersion = str_QQVersion; 
    QQPath = str_QQPath; 
    } 
    return result; 
    } 
    
    /// <summary> 
    /// 
    /// </summary> 
    /// <param name="str_QQPath"></param> 
    /// <param name="str_QQVersion"></param> 
    private static void GetQQPath(out string str_QQPath, out string str_QQVersion) 
    { 
    string str_PatheResult = string.Empty; 
    string str_VersionResult = string.Empty; 
    string str_KeyName = "TypePath"; 
    object objResult = null; 
    Microsoft.Win32.RegistryValueKind regValueKind;//指定在注册表中存储值时所用的数据类型,或标识注册表中某个值的数据类型。 
    Microsoft.Win32.RegistryKey regKey = null;//表示 Windows 注册表中的项级节点(注册表对象?) 
    Microsoft.Win32.RegistryKey regSubKey = null; 
    try 
    { 
    regKey = Microsoft.Win32.Registry.LocalMachine;//读取HKEY_LOCAL_MACHINE项 
    if (regSubKey == null) 
    {//QQ 
    regSubKey = regKey.OpenSubKey(@"SOFTWARETencentPlatForm_Type_List3", false);//如果bool值为true则对打开的项进行读写操作,否则为只读打开 
    str_VersionResult = "QQ"; 
    str_KeyName = "TypePath"; 
    } 
    objResult = regSubKey.GetValue(str_KeyName); 
    regValueKind = regSubKey.GetValueKind(str_KeyName); 
    if (regValueKind == Microsoft.Win32.RegistryValueKind.String) 
    { 
    str_PatheResult = objResult.ToString(); 
    } 
    } 
    catch (Exception ex) 
    { 
    LogHelper.WriteLogError(ex.ToString()); 
    //throw ex; 
    } 
    finally 
    { 
    if (regKey != null) 
    { 
    regKey.Close(); 
    regKey = null; 
    } 
    
    if (regSubKey != null) 
    { 
    regSubKey.Close(); 
    regSubKey = null; 
    } 
    } 
    str_QQPath = str_PatheResult; 
    str_QQVersion = str_VersionResult; 
    } 
    #endregion

    迅雷

    #region 检测 Thunder 迅雷 
    public static bool isInstallThunder(out string thunderVersion, out string thunderPath) 
    { 
    bool result = false; 
    string str_ThunderPath = string.Empty; 
    string str_ThunderVersion = string.Empty; 
    thunderVersion = string.Empty; 
    thunderPath = string.Empty; 
    // veryhuo.com 
    GetThunderPath(out str_ThunderPath, out str_ThunderVersion); 
    if (!string.IsNullOrEmpty(str_ThunderPath) && !string.IsNullOrEmpty(str_ThunderVersion)) 
    { 
    result = true; 
    thunderVersion = str_ThunderVersion; 
    thunderPath = str_ThunderPath; 
    } 
    return result; 
    } 
    
    /// <summary> 
    /// 
    /// </summary> 
    /// <param name="str_QQPath"></param> 
    /// <param name="str_QQVersion"></param> 
    private static void GetThunderPath(out string str_thunderPath, out string str_thunderVersion) 
    { 
    string str_PatheResult = string.Empty; 
    string str_VersionResult = string.Empty; 
    string str_KeyName = "Path"; 
    object objResult = null; 
    Microsoft.Win32.RegistryValueKind regValueKind;//指定在注册表中存储值时所用的数据类型,或标识注册表中某个值的数据类型。 
    Microsoft.Win32.RegistryKey regKey = null;//表示 Windows 注册表中的项级节点(注册表对象?) 
    Microsoft.Win32.RegistryKey regSubKey = null; 
    try 
    { 
    regKey = Microsoft.Win32.Registry.LocalMachine;//读取HKEY_LOCAL_MACHINE项 
    if (regSubKey == null) 
    {//QQ 
    regSubKey = regKey.OpenSubKey(@"SOFTWAREThunder NetworkThunderOem	hunder_backwnd", false);//如果bool值为true则对打开的项进行读写操作,否则为只读打开 
    str_VersionResult = "Thunder"; 
    str_KeyName = "Path"; 
    } 
    objResult = regSubKey.GetValue(str_KeyName); 
    regValueKind = regSubKey.GetValueKind(str_KeyName); 
    if (regValueKind == Microsoft.Win32.RegistryValueKind.ExpandString) 
    { 
    str_PatheResult = objResult.ToString(); 
    } 
    } 
    catch (Exception ex) 
    { 
    LogHelper.WriteLogError(ex.ToString()); 
    } 
    finally 
    { 
    if (regKey != null) 
    { 
    regKey.Close(); 
    regKey = null; 
    } 
    if (regSubKey != null) 
    { 
    regSubKey.Close(); 
    regSubKey = null; 
    } 
    } 
    str_thunderPath = str_PatheResult; 
    str_thunderVersion = str_VersionResult; 
    } 
    #endregion
  • 相关阅读:
    手打的table
    高质量程序设计指南C/C++语言——C++/C程序设计入门(2)
    高质量程序设计指南C/C++语言——C++/C程序设计入门
    int *p = NULL 和 *p = NULL(转载)
    C语言深度剖析---预处理(define)(转载)
    C语言--union关键字(转载)
    C语言深度剖析--volatile(转载)
    C语言深度剖析---const关键字(转载)
    C语言循环剖析(转载)
    main函数的参数问题 (转载)
  • 原文地址:https://www.cnblogs.com/ArRan/p/3567582.html
Copyright © 2011-2022 走看看