Как отладить проблемы прав доступа ASP с объектом WScript.Shell? - PullRequest
5 голосов
/ 22 мая 2009

Мне нужно запустить операцию командной строки из какого-либо устаревшего приложения ASP.

Вот мой код:

<%
    cmd = "%comspec% /c echo Hello"    

    set wsh = CreateObject("WScript.Shell")
    ireturn = wsh.Run(cmd, 0, true)
    set wsh = nothing
%>

И вот результат, который я получаю:

Ошибка времени выполнения Microsoft VBScript '800a0046'

В доступе отказано

/ test.asp, строка 6

У вас есть идеи, как заставить IIS6 запускать этот код?

Примечание. Конечно, мне не нужно запускать команду echo, но я хочу исключить любые дополнительные причины проблемы.

Обновление: я пробовал большинство вещей, упомянутых в томалаках, но ничего не помогло. Может быть, я могу немного изменить вопрос. Как я могу отладить эту проблему?

1 Ответ

5 голосов
/ 22 мая 2009

ASP обычно запрещен доступ к чему-либо потенциально опасному, например, к cmd.exe. Проверьте права доступа к файлу на cmd.exe, чтобы увидеть, верно ли это для вас (я полагаю, это так).

Если вы действительно должны использовать cmd.exe для выполнения части обработки страницы, либо измените права доступа к файлу cmd.exe (не рекомендуется для веб-сервера, выходящего в Интернет), либо убедитесь, что на странице ASP выполняются учетные данные, которым не запрещен доступ к этому файлу.

Для этого используйте консоль управления IIS, чтобы удалить «анонимный доступ» к странице ASP, и используйте вместо этого встроенную в Windows аутентификацию (если это возможно), либо оставьте «анонимный доступ» включенным и введите фиксированный набор учетных данных, которые должны использоваться вместо значения по умолчанию "IUSR _...".

В качестве альтернативы, если вы используете cmd.exe просто для запуска программы, которая выводит что-то в STDOUT, вы можете попробовать запустить программу напрямую, не заключая ее в вызов cmd.exe. Опять же, пользовательская страница ASP запускается под нужным доступом к исполняемому файлу этой программы.

...