2013-05-03 19 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 
相關問題