天天看點

在asp.net中執行應用程式

在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”項,右擊滑鼠,選擇“屬性”,在屬性框中打開“登陸”頁,勾選“本地系統帳戶”下的“允許與桌面互動”項,點選确定。重新啟動這項服務。

2、打開目錄“C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG”中的machine.config檔案,找到“processModel”項,原來這項中有一個屬性是userName="machine",将machine改為“system”,儲存檔案,修改完畢。

現在再運作以前的程式可以看到期望的結果。

以上程式在IIS5.0中可正常運作。