检查MS Access 2010是否安装
我正在维护一个当前检查MS Access 2007是否已安装的应用程序。它通过验证是否存在注册表项来执行此操作。检查MS Access 2010是否安装
public bool IsAccess2007Installed()
{
RegistryKey rootKey = Registry.ClassesRoot.OpenSubKey(@"Access.Application.12\shell\open\command", false);
return rootKey != null;
}
我将如何去核实MS Access 2010是否安装?或者更好的是,我将如何验证安装了MS Access 2007或更高版本?
假设用户具有管理员权限。
您可以检查该键的值(例如Access.Application.12)。 HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes下\ Access.Application \ CURVER
所以,你的代码行是:
RegistryKey rootKey = Registry.ClassesRoot.OpenSubKey(@"Access.Application\CurVer", false);
if (rootKey == null) return false;
string value = rootKey.GetValue("").ToString();
int verNum = int.Parse(value.subString(value.indexOf("Access.Application.")));
if (value.StartsWith("Access.Application.") && verNum >= 12)
{ return true; }
根据上次在机器上运行的版本,这不会发生什么变化吗?例如如果我同时拥有MS Access 2003和2007,即使安装了2007,也可以将当前版本设置为2003。 – 2010-08-09 07:26:32
谢谢罗素。我已经实施了这两个步骤,首先检查是否安装了2007年,然后检查当前版本。这在大多数情况下都能正常工作,例外情况是2010年与其他版本一起安装。 对于其他正在寻找类似解决方案的人,您需要使用string value = rootKey.GetValue(“”)。ToString();获取密钥的默认值。 – 2010-08-09 07:59:54
@魔鬼鸽子,谢谢你的解决,我会更新我的答案。 :) – Russell 2010-08-09 08:08:19
我已按照罗素的回答实施的解决方案。如果任何人都可以为我提供不依赖于CurVer的解决方案,我将发布代码。 – 2010-08-09 08:03:09
这可能是有趣的:http://stackoverflow.com/questions/2020181/find-version-of-access – Fionnuala 2010-08-09 08:05:17
感谢Remou。我注意到其中一个答案中有一个Access版本13的检查。据谷歌称,微软因迷信原因已经跳过了13版本。 – 2010-08-09 08:32:38