2013-05-03 73 views
0

我想有它执行基于C我怎样才能运行exe可执行文件(写一个txt文件)在传统的ASP

的exe文件filew.exe通过filew编译生成一个exe文件的服务器页面。 C;

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>

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

您检查文件的权限?应该启用IIS用户来执行您所描述的操作(执行可执行文件和写入文件)。 – misleadingTitle 2013-05-03 08:34:00

+0

你没有收到任何错误/消息吗?尝试将您的代码块(ASP)包装在“On Error”块中。 – Paul 2013-05-03 12:06:27

+0

.exe文件是用于执行代码的,只是将“this is test string”写入文件并将其命名为“something.exe”将不会实现任何内容,因为它不会是有效的“机器代码”,并且没有正确的标题系统可能会忽略该文件的开始。 – 2013-05-03 15:13:59

回答

0

您无法从传统ASP网页运行EXE。这样的操作会引发安全例外,不被允许。您将不得不创建一个假定提升权限(不仅仅是站点访问者)将命令传递给EXE的DLL接口。或者你可以把你的C代码放入DLL中。然后,你可以打电话给你的DLL像...

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

谢谢!我会尽力 :-) – 2013-05-06 05:13:57

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