检查用户是不是将正确版本的 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 设置为默认值的主要内容,如果未能解决你的问题,请参考以下文章
在 Xamarin android 代码中找不到“ACCESS_BACKGROUND_LOCATION”权限。我需要检查用户是不是已授予此权限
MyEclipse 用户sa 登录失败 sqlserver 设置过了 分不多求帮忙