检测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(@"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)
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)
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#代码的更多相关文章
- Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
/** * @author hechen */ var gs = { /**获得屏幕宽度**/ ScreenWidth: function () { return window.screen.widt ...
- 获取Windows平台下 安装office 版本位数信息
最近在处理客户端安装程序过程,有一个需求:需要检测Windows平台下安装office 版本信息以及获取使用的office是32 位还是64 位: 当检测出office 位数为64位时,提示当前off ...
- Visual Studio安装项目中将用户选择的安装路径写入注册表的方法[转]
在你的工程名上右击 -> View ->Registry(视图 -> 注册表) 在你需要写注册表的主键下,例如我注册firefox插件的例子是: (1)右击HKEY_CURRENT_ ...
- c# 遍历所有安装程序 获取所有已经安装的程序
/// <summary> /// 获取所有已经安装的程序 /// </summary> /// <param name="reg"></ ...
- 如何安装 Microsoft Office 兼容包,以便您可以在早期版本的 Microsoft Office 中打开和保存 Office Open XML 格式
https://support.microsoft.com/zh-cn/kb/923505 针对 Office 2003 的支持已终止 Microsoft 已于 2014 年 4 月 8 日终止了针对 ...
- 在linux下面安装mysql 确认 配置文件路径 my.cnf
1.确认服务器my.cnf 文件路径.但不知道那个是 2.通过which mysql命令来查看mysql的安装位置: 3.通过/usr/local/mysql/bin/mysqld --verbose ...
- rpm2cpio---如何不安装但是获取rpm包中的文件
如何不安装但是获取rpm包中的文件 使用工具rpm2cpio和cpio rpm2cpio xxx.rpm | cpio -idmv 参数i表示提取文件.v表示指示执行进程,d和make-directo ...
- python获取本机的安装所有应用( Windows)
Windows获取本机的安装所有应用 采用操作注册表的方式,理论上其他可通过操作注册表方式的动作均可 import winreg def get_window_software(hive, flag) ...
- SQL Server 2008 修改安装路径后安装出错的解决方法
1.安装时如果修改安装路径后报错 例如想把“C:\Program Files\Microsoft SQL Server” 修改为“D:\Program Files\Microsoft SQL Serv ...
随机推荐
- 0基础学习ios开发笔记第二天
C语言的基本结构 c语言的入口函数是main函数. main函数的返回值行业标准是int return 数字:返回值 每条语句最后以分号结尾 注释:行注释.块注释 int main(void) { / ...
- 关于layoutSubviews以及drawRect方法
首先两个方法都是异步执行.layoutSubviews方便数据计算,drawRect方便视图重绘. layoutSubviews在以下情况下会被调用: 1.init初始化不会触发layoutSubvi ...
- javascript document对象 第21节
<html> <head> <title>DOM对象</title> <style type="text/css"> t ...
- 转:HashMap的工作原理,及笔记
HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此 ...
- 管理员把我的admin权限去掉了,那么如何获得jdk zip安装呢?这篇可以帮你。
JDK is not available as a portable zip unfortunately. However, you can: Create working JDK directory ...
- MVC的发展
ASP.NET下的MVC从原始的1.0走到2.0,再到3.0,现在走到4.0,也许明年5.0就问世了,先不管那些,那说说这些MVC在ASP.NET是如何变化发展的.对于.net编程人员来说可能会很熟悉 ...
- jQuery设置checkbox全选(区别jQuery版本)
jQuery设置checkbox全选在网上有各种文章介绍,但是为什么在我们用他们的代码的时候就没有效果呢? 如果你的代码一点错误都没有,先不要急着怀疑人家代码的正确性,也许只是人家跟你用的jQuery ...
- Spring Cloud App(Service) Pom示例
都配对了才能找到jar包(无法访问外网时是如何配的?) parent dependencyManageMent repositories plugInRepositories <groupId& ...
- yii2 gii页面404和debug调试栏无法显示解决方法
在debug和gii配置项中加一项: 'allowedIPs' => ['127.0.0.1', '::1', '*.*.*.*']即可 注:因为yii默认只让127.0.0.1访问
- CUDA获取显卡数据
一个简单的获取Nvidia显卡信息的程序 #include<iostream> int main() { cudaDeviceProp prop; int count; cudaGetDe ...