经典的ASP VB Wscript输出

时间:2020-04-08 09:02:15

标签: cmd asp-classic wscript.shell qpdf

感谢您的阅读/帮助。 在旧的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中,我都得到了完美的答复:“ Helllo世界”。

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 :(得分: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 \。

  • 重启以防万一。

谢谢您的帮助!

相关问题