【问题标题】: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,您能否详细说明如何做到这一点。

标签: windows ms-access default ms-access-2016


【解决方案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
猜你喜欢
  • 1970-01-01
  • 2018-11-14
  • 2021-11-28
  • 2018-10-10
  • 1970-01-01
  • 2019-04-06
  • 1970-01-01
  • 2021-02-02
  • 2019-08-24
相关资源
最近更新 更多