天天看點

asp.net 調用本地程式 調用執行exe應用程式

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();

繼續閱讀