2013-08-26 161 views
2

我正在閱讀ASP經典的一些註冊表以獲取我需要的一些值並將它們保存爲應用程序級別的變量。在Global.asa文件我的代碼:ASP經典WshShell.RegRead錯誤「80070002」

<SCRIPT LANGUAGE=VBScript RUNAT=Server> 
Sub Application_OnStart 
    Application("test") = "testing..." 
    Dim WSHShell, regLink 
    Set WSHShell = CreateObject("WScript.Shell") 
    regLink = "HKEY_LOCAL_MACHINE\SOFTWARE\Odyssey\" 

    Application("test2") = WSHShell.RegRead(regLink & "value") 
End Sub 
</SCRIPT> 

在我TEST.ASP文件,我只是輸出的「測試」和「測試2」的變量。但是,在運行TEST.ASP,我得到錯誤信息:
WshShell.RegRead錯誤「80070002」
在註冊表項中無效的根

我已經檢查和雙重檢查,關鍵確實存在,並且這個代碼工作在我們的舊服務器上,所以我認爲這是IIS中的配置問題。如果我能找到它,我會被詛咒的。 ASP Classic已安裝並啓用,並且在Windows Server 2008 R2 x64上使用IIS 7.5。希望有人知道問題是什麼。

編輯:我下載了Process Monitor來查看註冊表訪問。經過一番搜索。我發現它實際上是在「HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Odyssey \ value」中尋找關鍵字。我收集這與64x的服務器有關。我不想將鍵移動到該位置,因爲它們可能永遠不會再被找到,特別是當代碼指向不同的目錄時。

有沒有辦法阻止這種重定向或更改結構,這樣可以工作?

在此先感謝您的幫助。

道格

+1

更新的問題包含一些從Process Monitor發現的新細節。 – Doug

+0

感謝您更新您的帖子。您可能在這裏發佈您的問題(或實際上尋找答案)的運氣更好:http://serverfault.com/ – dcaswell

回答

3

由於在編輯我的問題提到的,這個問題似乎是將網址被重定向,因爲它是一個x64系統。我最終移動了我試圖訪問HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Odyssey的註冊管理機構。然後,我稍微修改了代碼以專門查找該位置的密鑰。

regLink = "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Odyssey\" 

由於我指定的Wow6432Node自己時,系統不會增加另外一個。我會一直保持,而在之前的位置的鑰匙,但至少他們在哪裏的代碼點。像以前一樣,查看代碼的人永遠都不會想到在Wow6432Node目錄中查找。重要的部分是密鑰不會丟失到Windows註冊表系統的深處。