检查是不是安装了 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