C#通过注册表检测是否安装Office和QQ等软件

C/S项目需求:

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

Copy to Clipboard Liehuo.Net Codes引用的内容: [www.veryhuo.com]
View Code
#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是否已安装,通过注册表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值