#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(@"SOFTWARE\Microsoft\Office\8.0\Common\InstallRoot", false);//如果bool值为true则对打开的项进行读写操作,否则为只读打开
str_VersionResult = "Office97";
str_KeyName = "OfficeBin";
}
if (regSubKey == null)
{//Office2000
regSubKey = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\9.0\Common\InstallRoot", false);
str_VersionResult = "Pffice2000";
str_KeyName = "Path";
}
if (regSubKey == null)
{//officeXp
regSubKey = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\10.0\Common\InstallRoot", false);
str_VersionResult = "OfficeXP";
str_KeyName = "Path";
} if (regSubKey == null)
{//Office2003
regSubKey = regKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\11.0\Common\InstallRoot", 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(@"SOFTWARE\Microsoft\Office\12.0\Common\InstallRoot", 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(@"SOFTWARE\Tencent\PlatForm_Type_List\3", 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(@"SOFTWARE\Tencent\PlatForm_Type_List\3", 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(@"SOFTWARE\Thunder Network\ThunderOem\thunder_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

检测Office是否安装以及获取安装 路径 及安装版本 QQ,迅雷,旺旺 C#代码的更多相关文章

  1. Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码

    /** * @author hechen */ var gs = { /**获得屏幕宽度**/ ScreenWidth: function () { return window.screen.widt ...

  2. 获取Windows平台下 安装office 版本位数信息

    最近在处理客户端安装程序过程,有一个需求:需要检测Windows平台下安装office 版本信息以及获取使用的office是32 位还是64 位: 当检测出office 位数为64位时,提示当前off ...

  3. Visual Studio安装项目中将用户选择的安装路径写入注册表的方法[转]

    在你的工程名上右击 -> View ->Registry(视图 -> 注册表) 在你需要写注册表的主键下,例如我注册firefox插件的例子是: (1)右击HKEY_CURRENT_ ...

  4. c# 遍历所有安装程序 获取所有已经安装的程序

    /// <summary> /// 获取所有已经安装的程序 /// </summary> /// <param name="reg"></ ...

  5. 如何安装 Microsoft Office 兼容包,以便您可以在早期版本的 Microsoft Office 中打开和保存 Office Open XML 格式

    https://support.microsoft.com/zh-cn/kb/923505 针对 Office 2003 的支持已终止 Microsoft 已于 2014 年 4 月 8 日终止了针对 ...

  6. 在linux下面安装mysql 确认 配置文件路径 my.cnf

    1.确认服务器my.cnf 文件路径.但不知道那个是 2.通过which mysql命令来查看mysql的安装位置: 3.通过/usr/local/mysql/bin/mysqld --verbose ...

  7. rpm2cpio---如何不安装但是获取rpm包中的文件

    如何不安装但是获取rpm包中的文件 使用工具rpm2cpio和cpio rpm2cpio xxx.rpm | cpio -idmv 参数i表示提取文件.v表示指示执行进程,d和make-directo ...

  8. python获取本机的安装所有应用( Windows)

    Windows获取本机的安装所有应用 采用操作注册表的方式,理论上其他可通过操作注册表方式的动作均可 import winreg def get_window_software(hive, flag) ...

  9. SQL Server 2008 修改安装路径后安装出错的解决方法

    1.安装时如果修改安装路径后报错 例如想把“C:\Program Files\Microsoft SQL Server” 修改为“D:\Program Files\Microsoft SQL Serv ...

随机推荐

  1. html-----008

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Mysql笔记【2】-数据表的基本操作

    1.创建数据库表 create table <表名> ( 字段名1 类型 <列级别限制> , 字段名2 类型 <列级别限制> , 字段名3 类型 <列级别限制 ...

  3. 第3章 Struts2框架--2、完整的Struts2框架应用实例

    1.建立一个Dynamic Web project,项目名:UserManager,把Struts2所必需的JAR复制到项目WEB-INF/lib目录下 2.修改web.xml文件,在web.xml文 ...

  4. 九度OJ 1078 二叉树遍历

    题目地址:http://ac.jobdu.com/problem.php?pid=1078 题目描述: 二叉树的前序.中序.后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历 ...

  5. 专题二、ArrayList序列化技术细节详解

    一.绪论 所谓的JAVA序列化与反序列化,序列化就是将JAVA 对象以一种的形式保持,比如存放到硬盘,或是用于传输.反序列化是序列化的一个逆过程. JAVA规定被序列化的对象必须实现java.io.S ...

  6. Check Mysql Database Size

    SELECT ROUND( SUM(data_length + index_length) / 1024 / 1024 ) TOTAL_MB, ROUND(SUM(data_length) / 102 ...

  7. Java并发编程二三事

    Java并发编程二三事 转自我的Github 近日重新翻了一下<Java Concurrency in Practice>故以此文记之. 我觉得Java的并发可以从下面三个点去理解: * ...

  8. FastCgi与PHP-fpm关系[转] 读完本文瞬间明朗了很多

    刚开始对这个问题我也挺纠结的,看了<HTTP权威指南>后,感觉清晰了不少. 首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者. ...

  9. Polygon Table - Google Chrome

    Polygon table by Pedro Amaro Santos Lisboa, Portugal posted at http://forums.cgsociety.org/showthrea ...

  10. Remark of BLENDFUNCTION from MSDN

    Remarks When the AlphaFormat member is AC_SRC_ALPHA, the source bitmap must be 32 bpp. If it is not, ...