0
我在Installshield Basic MSI項目中有一個自定義操作,以從註冊表中找出SQL Server的版本。在Windows Server 2012中安裝程序註冊表訪問
RegKey2012 = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\" & _
"Microsoft SQL Server\MSSQL11.MSSQLSERVER\"
If RegKeyExists(RegKey2012) Then
WScript.StdOut.Write("2012")
Else
WScript.StdOut.Write("2008R2")
End If
Function RegKeyExists(Key)
Dim oShell, entry
On Error Resume Next
Set oShell = CreateObject("WScript.Shell")
entry = oShell.RegRead(Key)
If Err.Number <> 0 Then
Err.Clear
RegKeyExists = False
Else
Err.Clear
RegKeyExists = True
End If
End Function
安裝程序在Windows 7機器上正常工作。上述腳本在Windows Server 2012計算機上獨立運行良好。但是,當我在Windows Server 2012上運行安裝程序(如ADMIN)時,它無法按預期工作,並且錯誤說明是 - 它無法找到註冊表項。
任何想法。
你是否可能遇到32位和64位註冊表重定向問題? – DaveE
不知道..我馬2/10在Installshield中...你能請詳細說明...在32位和64位計算機的註冊表鍵是相同的 - HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER – Subhasis
32 64位Windows上的位應用程序將其註冊表項重定向到其他位置。如果你的應用/安裝程序是32位的,它可能是它的註冊表查找被重定向到該位置(... \ SOFTWARE \ Wow6432Node \ ...),而你的64位SQL Server註冊表項是在「標準「的位置。在IS幫助中查找REGDB_OPTION_WOW64_64KEY或WOW64FSREDIRECTION。 – DaveE