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

Posted

技术标签:

【中文标题】检查用户是不是将正确版本的 Access 设置为默认值【英文标题】:Check if the user has correct version of Access set as default检查用户是否将正确版本的 Access 设置为默认值 【发布时间】:2017-08-21 07:24:34 【问题描述】:

我已经从 Access 2016 创建了访问前端 ACCDR。为了让用户使用这个文件,用户需要安装 Access runtime 2016。

我的大多数用户已经安装了 MS Office 2007 或 2010。因此,当用户在安装 Access 运行时 2016 后尝试打开 ACCRD 文件时。他们仍然会收到错误消息,因为他们使用的是旧版本的 Access(又名 2010)而不是 2016 版本打开文件。

我的问题:

如何检查用户是否将正确的 Access 版本设置为默认值?我可以支付一个检查这个的软件。我也可以编辑注册表(如果有)或导入注册表(如果有)。

[ACCDR 文件是通过重命名 ACCDE(访问编译文件)创建的]。

【问题讨论】:

为什么不直接问COM默认注册的是什么版本呢? @Stavm,您能否详细说明如何做到这一点。 【参考方案1】:

您可以直接阅读版本

Version = Application.Version

应该返回“16.0”。如果没有,请向用户弹出一条消息以使用 Access 2016 打开。

更好的是,为用户提供一个快捷方式,以使用运行时打开您的应用。

【讨论】:

看到用户运行的是早期版本后,Open Runtime version in VBA。 @marlan:那只会在运行时模式下打开默认的 Access。 我把这段代码放在哪里? (我是 Access Programming 的新手)我尝试将代码添加到打开 Access 文件时打开的默认表单中。 onLoad事件。但是由于access不能识别用较新版本的Access编译的数据库,所以不会加载表单。 您可以尝试使用宏 - 或透露您的密码。 找到运行时版本exec所在的位置,使用Shell() Function:Var = Call Shell ("C:\RuntimeDirectory\RintimeExecutible.exe PathToAccessFile.mdb")打开。请注意 EXEC 和您作为参数发送的文件之间的空格【参考方案2】:

最好的方法是在您启动进程后立即查询 COM 并采取相应措施。

如果您还没有正在运行的访问进程,只需启动一个,查询它,然后在您刚刚调用的进程中执行您的操作。

   Microsoft.Office.Interop.Access.Application _accessApp = new Microsoft.Office.Interop.Access.Application();
   string version = _accessApp.Version;       

将版本字符串与 Microsoft 的版本历史匹配: https://en.wikipedia.org/wiki/History_of_Microsoft_Office

对于 Office 2016,您要查找的字符串是 16.0


另一种方法是通过注册表检查办公室的 GUID 并将其与已知的办公室向导进行比较(它们不是随机的)。

https://superuser.com/questions/1140114/how-to-detect-microsoft-office-version-name

【讨论】:

非常感谢您的链接。它帮助我了解注册表值如何帮助了解已安装的版本。我听不懂query the COM just after you launched the process

以上是关于检查用户是不是将正确版本的 Access 设置为默认值的主要内容,如果未能解决你的问题,请参考以下文章

access数据库远程连接

以编程方式检查是不是设置了密码锁

在 Xamarin android 代码中找不到“ACCESS_BACKGROUND_LOCATION”权限。我需要检查用户是不是已授予此权限

MyEclipse 用户sa 登录失败 sqlserver 设置过了 分不多求帮忙

在 MS Access 2007 中未正确处理查询部分的日期类型的更新集

html 实时清单 - 此脚本将检查元标记,站点地图,GA,favicon,共享元标记是否已正确设置。不是花哨的