您的位置:首页 > 编程语言 > ASP

asp.net中通过注册表来检测是否安装Office(迅雷/QQ是否已安装)

2014-02-18 13:18 525 查看
原文 asp.net中通过注册表来检测是否安装Office(迅雷/QQ是否已安装)

检测Office是否安装以及获取安装 路径 及安装版本

代码如下复制代码
#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

只需修改验证

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

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

代码如下复制代码
View Code
#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;

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 NetworkThunderOemthunder_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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐