1

我想要一个服务器页面,它执行基于 C 编译的 exe 文件

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

文件w.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文件

测试.bat>

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!

4

2 回答 2

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
于 2014-01-13T18:06:42.147 回答
0

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

Set MyDLL = Server.CreateObject("MyDLL.*")
于 2013-05-05T00:12:05.000 回答