1

感谢阅读/帮助。在旧的 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

变量:qpdf 变量:c:\WINDOWS\system32\qpdf.exe

PATH的相关部分:

%SystemRoot%\system32;

C:\Program Files\Utils\xpdf\;

C:\实用程序\;

但是,够有趣的:

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。感谢您的帮助 :-)

4

1 回答 1

0

问题终于解决了。不能说 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 没有。将测试更改为对 IUSR 具有完全控制权的文件夹 C:\test\。

  • 重新启动以防万一。

感谢您的帮助!

于 2020-04-12T15:01:52.510 回答