Office中国论坛/Access中国论坛

标题: 取得特定版本的access安装路径 [打印本页]

作者: Sagittarius    时间: 2007-12-15 16:23
标题: 取得特定版本的access安装路径
如题,如果同时安装了2002xp和2003,如何shell 2003版本的access,而不是2002?
简单的syscmd(acsyscmdaccessdir)不行了,可能需要从注册表中取值,可是不知道在哪儿取
或许还有其他更简单的命令或者函数?
作者: andymark    时间: 2007-12-15 16:27
http://www.office-cn.net/forum.p ... ght=%2B%BA%C3%D1%A7
作者: Sagittarius    时间: 2007-12-15 16:28
记得有人写了个函数all_version什么的,可惜忘了。access 12 可以在注册表取得安装地址的
作者: Sagittarius    时间: 2007-12-15 16:32
这么快,效率阿!谢谢,先去看看
作者: tmtony    时间: 2007-12-15 16:51
可以判断版本,也可使用最低版本的方法, 因为以后版本是兼容
作者: Sagittarius    时间: 2007-12-15 17:27
谢谢,发现也可以从software\microsoft\office\取数,原理一样
作者: Sagittarius    时间: 2007-12-15 17:42
看到大家这么热心,很感动!
找到以前用过的函数(需要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 "
作者: Sagittarius    时间: 2007-12-15 17:56
上面没有trap error 也没做dir判断,不好意思,就是个大概意思




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3