标题: 取得特定版本的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 & "\"