我正在阅读 ASP Classic 中的一些注册表以获取我需要的一些值并将它们保存为应用程序级变量。在 global.asa 文件中,我有代码:
<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 文件中,我只输出“test”和“test2”变量。但是,在运行 test.asp 时,我收到错误消息:
WshShell.RegRead error '80070002'
Invalid root in registry key
我已经检查并仔细检查了密钥确实存在,并且这段代码在我们的旧服务器上运行,所以我认为这是 IIS 中的配置问题。如果我能找到它,我会被诅咒的。ASP Classic 已安装并启用,我在 Windows Server 2008 R2 x64 上使用 IIS 7.5。希望有人知道问题所在。
编辑:我下载了进程监视器来查看注册表访问。经过一番搜索。我发现它实际上是在“HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Odyssey\value”中寻找密钥。我认为这与服务器为 64 倍有关。我不想将密钥移动到该位置,因为它们可能永远不会再找到,尤其是当代码指向不同的目录时。
有没有办法停止这种重定向或改变结构,所以这可以工作?
在此先感谢您的帮助。
道格