检查是不是安装了 MS Access 2010

Posted

技术标签:

【中文标题】检查是不是安装了 MS Access 2010【英文标题】:Check if MS Access 2010 is installed检查是否安装了 MS Access 2010 【发布时间】:2010-08-09 07:16:08 【问题描述】:

我正在维护一个应用程序,该应用程序当前检查是否安装了 MS Access 2007。它通过验证注册表项是否存在来做到这一点。

public bool IsAccess2007Installed()

    RegistryKey rootKey = Registry.ClassesRoot.OpenSubKey(@"Access.Application.12\shell\open\command", false);

    return rootKey != null;

我将如何验证是否安装了 MS Access 2010?或者更好的是,我将如何验证是否安装了 MS Access 2007 或更高版本?

假设用户具有管理员权限。

【问题讨论】:

我已经根据 Russel 的回答实施了一个解决方案。如果有人可以为我提供不依赖于 CurVer 的解决方案,我将发布代码。 这可能很有趣:***.com/questions/2020181/find-version-of-access 谢谢雷穆。我注意到在其中一个答案中检查了 Access 版本 13。不过根据谷歌的说法,微软出于迷信的原因跳过了第 13 版。 【参考方案1】:

您可以改为检查此键的值(例如 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。 谢谢拉塞尔。我分两步实现了这一点,首先检查是否安装了 2007,然后检查当前版本。这在大多数情况下都有效,但 2010 与其他版本一起安装的情况除外。对于寻找类似解决方案的其他人,您需要使用 string value = rootKey.GetValue("").ToString();获取密钥的默认值。 @Evil Pigeon,感谢您的修复,我会更新我的答案。 :)

以上是关于检查是不是安装了 MS Access 2010的主要内容,如果未能解决你的问题,请参考以下文章

将 accde 文件从 MS Access 2013 保存到 MS Access 2010

检查用户是不是将正确版本的 Access 设置为默认值

MS Access驱动程序问题

MS Access 2010 解码数据库

MS Access 2010,从 1 个表格到 2 个表格的数据,在表格​​ 2 输入之前进行重复检查

如何在 MS Access 2010 中的单元格中显示空值