如何在经典的asp中执行exe文件(写入txt文件)

时间:2013-05-03 07:22:05

标签: asp-classic batch-file cmd exe wsh

我想要一个服务器页面,它执行基于C

编译的exe文件

exe文件是filew.c生成的filew.exe;

filew.c>

#include <stdio.h>

int main ()
{
  FILE * fp;
  fp = fopen("test.txt" , "w");
  char* testStr = "this is test string";
  fwrite(testStr , 1 , sizeof(testStr) , fp);
  fclose(fp);
  return 0;
}

我尝试过很少的方法来实现这个目标;

首先我尝试使用shellObject

运行
Dim shellObj
Set shellObj = Server.CreateObject("WScript.Shell")
shellObj.run "E:\test\filew.exe"
set shellObj = nothing

它不起作用..所以我尝试了这个

Dim shellObj 
shellObj = Server.CreateObject("Shell.Application")
shellObj.ShellExecute "E:\test\filew.exe"
Set shellObj = nothing

仍然没有......所以我制作了一个执行exe文件的批处理文件

&的test.bat GT;

dir > e:\test\dir1.txt
E:\test\filew.exe
dir > e:\test\dir2.txt

//第一行和第三行是测试批处理文件是否正确执行

我通过

调用了这个批处理文件
Dim shellObj
Set shellObj = Server.CreateObject("WScript.Shell")
shellObj.run "E:\test\test.bat"
set shellObj = nothing

结果是......只创建了dir1.txt和dir2.txt但没有test.txt !!

2 个答案:

答案 0 :(得分:1)

Function execStdOut(cmd)
    Dim goWSH : Set goWSH = CreateObject( "WScript.Shell" ) 
    Dim aRet: Set aRet = goWSH.exec(cmd)
    execStdOut = aRet.StdOut.ReadAll()
End Function 

theOutput = execStdOut("c:\runVirus.bat")

response.write "The output is " & theOutput

答案 1 :(得分:0)

您无法从Classic ASP网页运行EXE。此类操作将引发安全性异常,并且不被允许。您必须创建一个DLL接口,该接口假定提升权限(不仅仅是站点访问者)将命令传递给EXE。或者您可以将您的C代码放入DLL中。然后你可以把你的DLL称为......

Set MyDLL = Server.CreateObject("MyDLL.*")