志在指尖
用双手敲打未来

获取Windows平台下 装置office 版本位数信息

最近在处理客户端装置程序过程,有一个需求:需要检测Windows平台下装置office版别信息以及获取运用的office是32位仍是64位;当检测出office位数为64位时,提示当时office不支撑程序的运用。
找了许多资料,一般状况下,是不能直接获取office装置位数信息的;加上Windows32位与64位体系,装置运用的office在不同Windows体系下注册表位置不一样,久久不能解决这个需求。
话不多说,先记录一下代码。
注意事项:
Environment.Is64BitOperatingSystem……//判别当时windows是否为64位操作体系//支撑.NetFrameWork4.0+
RegistryKey.OpenBaseKey….//支撑.NetFrameWork4.0+
C#
//确认当时操作体系是否为64位操作体系if(Environment.Is64BitOperatingSystem)//64位操作体系registryKey=RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,RegistryView.Registry64);else//32位操作体系registryKey=RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,RegistryView.Registry32);
检测注册表是否有wps装置信息:
///2///检测本地是否装置wps
///4///5publicstringCheckWpsExsitStatus()
{
stringwpsJudge=string.Empty;
try
{
//获取Windows注册表基项HKEY_LOCAL_MACHINE。
RegistryKeyregistryKey=Registry.LocalMachine;
//确认当时操作体系是否为64位操作体系(支撑.NetFrameWork4.0+)
if(Environment.Is64BitOperatingSystem)
//64位操作体系
registryKey=RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,RegistryView.Registry64);
else
//32位操作体系
registryKey=RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,RegistryView.Registry32);
//读取注册表信息32
RegistryKeywpsKey1=registryKey.OpenSubKey(@”SOFTWARE\Kingsoft\Office\6.0\common”);
if(wpsKey1!=null)
{
stringfilewps=wpsKey1.GetValue(“InstallRoot”).ToString();
if(File.Exists(filewps+@”\office6\et.exe”))
{
wpsJudge=”本电脑装置了Wps+Path=”+@”SOFTWARE\Kingsoft\Office\6.0\common”;
}
}
//读取注册表信息6432
RegistryKeywpsKey2=registryKey.OpenSubKey(@”SOFTWARE\Wow6432Node\Kingsoft\Office\6.0\common”);
if(wpsKey1!=null)
{
stringfilewps=wpsKey2.GetValue(“InstallRoot”).ToString();
if(File.Exists(filewps+@”\office6\et.exe”))
{
wpsJudge=”本电脑装置了Wps+Path=”+@”SOFTWARE\Wow6432Node\Kingsoft\Office\6.0\common”;
}
}

if(wpsJudge==string.Empty)
wpsJudge=”未装置wps!”;
}
catch(Exceptionex)
{
wpsJudge=”检测失败!”+ex.Message;
}

returnwpsJudge;
}
检测office装置状况:
1///2///检测本地是否装置Office3///4///office版别代号:14.0(office2010)5///6publicstringCheckOfficeExsitStatus(stringofficeVersion)7{8stringofficeJudge=string.Empty;9stringofficeVersionInfo=string.Empty;10if(string.IsNullOrEmpty(officeVersion))11returnofficeJudge;12try13{14//是否装置office15boolIsInstall=false;16//体系版别17boolIsSys64Bit=true;18//office装置位数1=32(NoWow6432Node);2=64(Wow6432Node)19intIofficeSetInfo=0;2021//获取Windows注册表基项HKEY_LOCAL_MACHINE。22RegistryKeyregistryKey=Registry.LocalMachine;23//确认当时操作体系是否为64位操作体系(支撑.NetFrameWork4.0+;4.0以下能够去除当时判别部分)24if(Environment.Is64BitOperatingSystem)25//64位操作体系26registryKey=RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,RegistryView.Registry64);27else28//32位操作体系29IsSys64Bit=false;registryKey=RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,RegistryView.Registry32);3031//32位操作体系?32RegistryKeyofficeKey1=registryKey.OpenSubKey(@”SOFTWARE\Microsoft\Office\”+officeVersion+@”\Word\InstallRoot”);33if(officeKey1!=null)34{35if(officeKey1.GetValue(“Path”)!=null)36{37stringfilewps=officeKey1.GetValue(“Path”).ToString();38if(File.Exists(filewps+”WINWORD.exe”))39{40IofficeSetInfo=1;41IsInstall=true;43}44}45}46//64位操作体系装置32位软件?47RegistryKeyofficeKey2=registryKey.OpenSubKey(@”SOFTWARE\Wow6432Node\Microsoft\Office\”+officeVersion+@”\Word\InstallRoot”);48if(officeKey2!=null)49{50if(officeKey2.GetValue(“Path”)!=null)51{52stringfilewps=officeKey2.GetValue(“Path”).ToString();53if(File.Exists(filewps+”WINWORD.exe”))54{55IofficeSetInfo=2;56IsInstall=true;58}59}60}61//现已装置62if(IsInstall)63{64//64位操作体系65if(IsSys64Bit)66{67//运用office位数信息68if(IofficeSetInfo==1)69{70officeVersionInfo=”当时装置office版别为64位”;71}72elseif(IofficeSetInfo==2)73{74officeVersionInfo=”当时装置office版别为32位”;75}76}77else78{79if(IofficeSetInfo==1)80{81officeVersionInfo=”当时装置office版别为32位”;82}83elseif(IofficeSetInfo==2)84{85officeVersionInfo=”当时装置office版别为64位”;86}87}88officeVersionInfo=officeVersionInfo+$”IsSys64Bit={IsSys64Bit},IofficeSetInfo={IofficeSetInfo}”;89}9091}92catch(Exceptionex)93{94officeVersionInfo=”检测失败!”+ex.Message;95}9697returnofficeVersionInfo;98}
获取office版别称号
1///2///返回office版别(暂不包括office2019)3///4///office版别代号5///6publicstringGetOfficeVersionName(stringversionNum)7{8stringstrDesc=string.Empty;9switch(versionNum)10{11case”8.0″:{strDesc=”office97″;}break;12case”9.0″:{strDesc=”office2000″;}break;13case”10.0″:{strDesc=”officexp(2002)”;}break;14case”11.0″:{strDesc=”office2003″;}break;15case”12.0″:{strDesc=”office2007″;}break;16case”14.0″:{strDesc=”office2010″;}break;17case”15.0″:{strDesc=”office2013″;}break;18case”16.0″:{strDesc=”office2016″;}break;19default:strDesc=”未找到匹配内容:version=”+versionNum;break;20}2122returnstrDesc;23}
测试代码:
1///2///获取office装置状况3///4publicvoidGetVersionIsInstall()5{6varstrArray=newstring[]{“8.0″,”9.0″,”10.0″,”11.0″,”12.0″,”13.0″,”14.0″,”15.0″,”16.0”};7foreach(variteminstrArray)8{9varsetInfo=CheckOfficeExsitStatus(item);//获取装置office状况信息10if(!string.IsNullOrEmpty(setInfo))11Console.WriteLine(“体系装置Office版别为:”+GetOfficeVersionName(item));12Console.WriteLine(“item=”+item+”;”+setInfo);13}14}

未经允许不得转载:IT技术网站 » 获取Windows平台下 装置office 版本位数信息
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载