Возможно, что данные реестра могут указывать на dll драйвера, который не существует в том же месте в Windows 7 x64. Например, в XP диск может быть расположен в «C: \ Program Files \», в то время как в Win7 x64 он находится в «C: \ Program Files (x86)» - просто хотел указать это тем, кто наткнулся на это.
VBScript я собрал:
objShell.Run "reg export " & Chr(34) & "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC" & Chr(34) & "SystemODBC64.reg",1,True
objShell.Run "reg export " & Chr(34) & "HKEY_CURRENT_USER\SOFTWARE\ODBC" & Chr(34) & "UserODBC64.reg",1,True
А затем, чтобы обновить скрипт для слияния с 32-битным реестром:
Set objOFile = objFSO.OpenTextFile("SystemODBC64.reg", ForReading, False, TristateTrue)
strSystemReg64Contents = objOFile.ReadAll
WScript.Echo "Formatting system ODBC to 32-bit"
strSystemReg64 = Replace(strSystemReg64Contents, "HKEY_LOCAL_MACHINE\Software","HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node",1,-1,1)
WScript.Echo "Creating System ODBC File"
objFSO.CreateTextFile("SystemODBC32.reg", True, True ).Write strSystemReg64
strUserReg64 = "UserODBC64.reg"
Set objOFile = objFSO.OpenTextFile(strUserReg64, ForReading, False, TristateTrue )
strUserReg64Contents = objOFile.ReadAll
WScript.Echo "Formatting user ODBC to 32-bit"
strUserReg64 = Replace(strUserReg64Contents, "HKEY_CURRENT_USER\Software","HKEY_CURRENT_USER\SOFTWARE\Wow6432Node",1,-1,1)
WScript.Echo "Creating User ODBC File"
objFSO.CreateTextFile("UserODBC32.reg", True, True ).Write strUserReg64