sp.net中執行exe應用程式
在asp.net中執行應用程式有兩種方法:
1、調用win32函數ShellExecute。
2、用.NET Framework中的Process類。
下面我分别用這兩種方法執行Windows中的記事本程式notepad.exe。
建立一個ASP.Net頁面Default.aspx,在上面放一個按鈕,進入Default.aspx.cs頁面填寫背景處理程式。
1、調用win32函數ShellExecute。添加引用using System.Runtime.InteropServices;
聲明函數: [DllImport("shell32.dll")]
private static extern IntPtr ShellExecute(IntPtr hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, Int32 nShowCmd);
在按鈕的單擊事件處理程式中調用前面生明的ShellExecute函數:
ShellExecute(IntPtr.Zero, "open", "c:\\windows\\notepad.exe", null, null, 1);
//檔案名可以不加字尾,如"c:\\windows\\notepad"。程式完成
2、用.NET Framework中的Process類添加引用
using System.Diagnostics;
在按鈕的單擊事件處理程式中填入以下代碼:
Process process = new Process();
process.StartInfo.FileName = "c:\\windows\\notepad.exe"; //檔案名必須加字尾。
process.Start();
程式完成。
注意:在asp.net2.0中運作以上兩種方法寫的程式都可以得到想要的結果。
但是在asp.net1.1或更早的版本卻不能得到想要的結果,打開任務管理器甚至可以看到程序已經存在(編譯器也沒有報錯),
但就是看不到執行效果,這是微軟為了安全原因禁掉了程式的運作,你需要做以下兩步才能正常運作:
1、在桌面右鍵單擊:我的電腦--管理--服務和應用程式--服務--IIS Admin--屬性--登陸--本地系統帳戶-選“允許與桌面互動”--确定
重新啟動“IIS Admin”服務。
2、打開目錄“C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG”中的machine.config檔案,
找到“processModel”項,原來這項中有一個屬性是userName="machine",将machine改為“system”,儲存檔案,修改完畢。
現在再運作以前的程式可以看到期望的結果。以上程式在IIS5.0中可正常運作。
示例:
public void CallSteven()
{
System.Diagnostics.Process prc = new System.Diagnostics.Process();