Classi c asp VB Wscript выход - PullRequest
       61

Classi c asp VB Wscript выход

1 голос
/ 08 апреля 2020

Спасибо за чтение / помощь. На старом сервере win2003 в этом сценарии:

Const WshRunning = 0
Const WshFinished = 1
Const WshFailed = 2
Dim shell, exec, strOutput

Set shell = CreateObject("WScript.Shell")
Set exec = shell.Exec("cmd.exe /c echo hello world") ' << this line changes in each example

If exec.Status = WshFailed Then
    strOutput = exec.StdErr.ReadAll
Else
    strOutput = exec.StdOut.ReadAll
End If
response.write strOutput

я получаю идеальный ответ: «Мир ада», как в CMD, так и в ASP. также с

Set exec = shell.Exec("cmd.exe /c ping 127.0.0.1")

Опять же, идеальный ответ, как в CMD, так и в ASP.

Но мне нужно знать, насколько большой PDF. Итак, я попробовал 2 инструмента:

Set exec = shell.Exec("cmd.exe /c qpdf --show-npages c:\utils\b.pdf")
Set exec = shell.Exec("cmd.exe /c pdfinfo -v c:\utils\b.pdf")

Оба работают в cmd, он выводит то, что я хочу знать, но я не получаю ответа в asp. Оба инструмента имеют права IUSR. Что мне не хватает? Большое спасибо,

Алекс

Мои комментарии ниже правильно читаются:

Хороший вопрос. Я забыл упомянуть, что я включил в системные переменные:

var: pdfinfo val: c: \ Program Files \ Utils \ xpdf \ pdfinfo.exe

var: qpdf val: c: \ WINDOWS \ system32 \ qpdf.exe

соответствующая часть PATH:

% SystemRoot% \ system32;

C: \ Program Files \ Utils \ xpdf \;

C: \ utils \;

Но, как ни странно:

Set exec = shell.Exec("cmd.exe /c pdfinfo -meta c:\utils\b.pdf")

CMD.exe запускается, вот и все. Но, по вашему предложению, я попробовал также

Set exec = shell.Exec("cmd.exe /c ""c:\Program Files\Utils\xpdf\pdfinfo.exe"" -meta c:\utils\b.pdf")

: (иногда, не всегда) Process Explorer показывает, что pdfinfo также запускается cmd. Тем не менее, нет ответа на ASP. Спасибо за помощь: -)

1 Ответ

0 голосов
/ 12 апреля 2020

Проблема наконец-то решена. Не могу сказать на 100%, что решило это, но для любого, кто читает это: этот код

Set exec = shell.Exec("cmd.exe /c qpdf --show-npages c:\utils\b.pdf")

был верным, но не работал. Он начал работать после того, как я изменил:

  • qpdf.exe (в system32) имел полный контроль над IUSR, qpdf13.dll - нет. Изменено.

  • C: \ utils \ b.pdf имел полный контроль над IUSR, а папка C: \ utils - нет. Поменял тест на папку C: \ test \, в которой был полный контроль на IUSR.

  • перезапущен на всякий случай.

Спасибо Вам за помощь!

...