2013-08-26 8 views
2

Я читаю некоторые реестры в ASP Classic, чтобы получить некоторые значения, которые мне нужны, и сохранить их как переменные уровня приложения. В файле global.asa У меня есть код:ASP Classic WshShell.RegRead error '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 файл, я просто вывести «тест» и «test2» переменных. Тем не менее, на управлении test.asp, я получаю сообщение об ошибке:
WshShell.RegRead ошибка «80070002»
Неверный корень в реестре ключа

Я проверил и дважды проверил, что ключ действительно существует, и этот код работал на нашем старом сервере, поэтому я думаю, что это проблема конфигурации в IIS. Я буду проклят, если найду его. ASP Classic установлен и включен, и я использую IIS 7.5 для Windows Server 2008 R2 x64. Надеюсь, у кого-то есть представление о том, в чем проблема.

EDIT: Я скачал Process Monitor, чтобы посмотреть доступ к реестру. После некоторых поисков. Я обнаружил, что он действительно ищет ключ в «HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Odyssey \ value». Я понимаю, что это связано с тем, что сервер 64x. Я не хочу переместить ключи в это место, поскольку они, скорее всего, никогда не будут найдены снова, особенно когда код указывает на другой каталог.

Есть ли способ остановить это перенаправление или изменить структуру, чтобы это могло работать?

Заранее за вашу помощь.

Doug

+1

Обновленный вопрос с некоторыми новыми деталями, найденными в Process Monitor. – Doug

+0

Спасибо за обновление вашего сообщения. Возможно, вам удастся опубликовать ваш вопрос (или фактически найти ответ) здесь: http://serverfault.com/ – dcaswell

ответ

3

Как уже упоминалось в редактировании на мой вопрос, проблема, как представляется, что URL был перенаправлен, потому что это была система x64. Я закончил перемещение реестров, к которым я пытался получить доступ к HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Odyssey. Затем я немного изменил код, чтобы искать ключи в этом месте.

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

Поскольку я указал WOW6432Node себя, система не добавит еще один в. Я бы скорее держал ключи в своем прежнем месте, но, по крайней мере, кодовые точки, где они находятся. Как и раньше, кто-то, смотрящий на код, никогда не догадался бы посмотреть в каталоге Wow6432Node. Важная часть состоит в том, что ключи не будут потеряны в глубине системы реестра Windows.