我需要從VBScript中讀取Temporary ASP.NET Files文件夾的位置,作爲使用Visual Studio 2008部署項目創建的安裝程序中的安裝後任務的一部分。如何從VBScript中讀取64位註冊表值作爲msi安裝後任務運行?
我想我會做這樣的事情:
Set oShell = CreateObject("Wscript.Shell")
strPath = oShell.RegRead("HKLM\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0\Path")
,然後拼接strPath的用「\臨時ASP.NET文件」,並用它做。
在x64系統,但是,我從WOW6432Node所獲得的價值(HKLM \ SOFTWARE \ Wow6432Node \微軟\ ASP.NET \ 2.0.50727.0),它給我的32位架構的路徑(C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727),但在x64系統上,我實際上需要64位路徑,即C:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727。
據我所知,發生這種情況是因爲.vbs文件是使用32位腳本主機運行的,因爲父進程(安裝程序)本身是32位的。
如何使用64位腳本主機運行腳本 - 或者 - 即使使用32位腳本主機運行腳本,如何讀取64位值?
你是怎麼做的,但只驗證一個鍵,而不是一個值? (例如:查看「SOFTWARE \ Microsoft \ ASP.NET \ 2.0.50727.0」是否存在,但不是「路徑」值 – 2013-09-17 19:12:59
@ DaniellePaquette-Harvey:您需要調用[`EnumKey`](http://msdn.microsoft.com/zh-cn/ com/en-us/library/aa390387.aspx)而不是`GetStringValue`(帶有適當的參數),並檢查'oOutParams.ReturnValue`是否爲0。另外,請參閱此問題中的答案:[檢查是否存在註冊表項](http ://stackoverflow.com/q/9604276/113116) – Helen 2013-09-18 06:51:54