设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1615|回复: 7
打印 上一主题 下一主题

[Access本身] 取得特定版本的access安装路径

[复制链接]
跳转到指定楼层
1#
发表于 2007-12-15 16:23:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,如果同时安装了2002xp和2003,如何shell 2003版本的access,而不是2002?
简单的syscmd(acsyscmdaccessdir)不行了,可能需要从注册表中取值,可是不知道在哪儿取
或许还有其他更简单的命令或者函数?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-12-15 16:27:29 | 只看该作者
3#
 楼主| 发表于 2007-12-15 16:28:37 | 只看该作者
记得有人写了个函数all_version什么的,可惜忘了。access 12 可以在注册表取得安装地址的
4#
 楼主| 发表于 2007-12-15 16:32:43 | 只看该作者
这么快,效率阿!谢谢,先去看看

点击这里给我发消息

5#
发表于 2007-12-15 16:51:04 | 只看该作者
可以判断版本,也可使用最低版本的方法, 因为以后版本是兼容
6#
 楼主| 发表于 2007-12-15 17:27:52 | 只看该作者
谢谢,发现也可以从software\microsoft\office\取数,原理一样
7#
 楼主| 发表于 2007-12-15 17:42:55 | 只看该作者
看到大家这么热心,很感动!
找到以前用过的函数(需要api,参见andymark 的帖子):
Function PathReg(VersionP, PathKey)
1001 Dim phkResult As Long, SA As SECURITY_ATTRIBUTES
1002 Dim lResult As Long, Index As Long, dwReserved As Long, szBuffer As String, _
           lBuffSize As Long, szBuffer2 As String, lBuffSize2 As Long, lType As Long, FT As FILETIME
1003  hKey = HKEY_LOCAL_MACHINE '设定主Key
1004  SubKey = "Software\Microsoft\office\" & VersionP & "\" '设定子Key
1005  lResult = RegOpenKeyEx(hKey, SubKey, 0, 1, phkResult)  '开启
1006  Index = 0
1007  dwReserved = 0
1008  Do While lResult = ERROR_SUCCESS
1009        szBuffer = Space(255)
1010        lBuffSize = Len(szBuffer)
1011        szBuffer2 = Space(255)
1012        lBuffSize2 = Len(szBuffer2)
1013        lResult = RegEnumValue(phkResult, Index, szBuffer, lBuffSize, _
                             dwReserved, lType, szBuffer2, lBuffSize2)
1014        If Left(szBuffer, lBuffSize) = PathKey Then  '找到了
1015            PathReg = Left(szBuffer2, lBuffSize2)  '传回路径
1016            Exit Function
1017        End If
1018        Index = Index + 1
1019   Loop
1020   PathReg = ""
End Function


调用时:
Dim P As Integer
AccPath = PathReg("11.0\Common\InstallRoot", "Path")
AccPath = Trim(AccPath)
P = InStr(AccPath, "OFFICE11\")
AccPath = Left(AccPath, P - 1) & "OFFICE11\"
If Right(AccPath, 1) <> "\" Then AccPath = AccPath & "\"

AccPath = UCase(AccPath)

AccPath = AccPath & "MSACCESS.EXE "
8#
 楼主| 发表于 2007-12-15 17:56:00 | 只看该作者
上面没有trap error 也没做dir判断,不好意思,就是个大概意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-29 02:00 , Processed in 0.104191 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表