在ASP.NET中執(zhí)行windows程序(ASP.NET1.1)
下文介紹如何ASP.NET中執(zhí)行windows程序。新建一個(gè)asp.net頁(yè)面Default.aspx,在上面放一個(gè)按鈕,進(jìn)入Default.aspx.cs頁(yè)面填寫后臺(tái)處理程序。
ASP.NET中執(zhí)行windows程序步驟1、調(diào)用win32函數(shù)ShellExecute。
添加引用using System.Runtime.InteropServices;
聲明函數(shù):
- [DllImport("shell32.dll")]
- private static extern IntPtr ShellExecute(IntPtr hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, Int32 nShowCmd);
在按鈕的單擊事件處理程序中調(diào)用前面生明的ShellExecute函數(shù):
- ShellExecute(IntPtr.Zero, "open", "c:\\windows\\notepad.exe", null, null, 1);
- //文件名可以不加后綴,如"c:\\windows\\notepad"
程序完成
ASP.NET中執(zhí)行windows程序步驟2、用.NET Framework中的Process類
添加引用using System.Diagnostics;
在按鈕的單擊事件處理程序中填入以下代碼:
- Process process = new Process();
- process.StartInfo.FileName = "c:\\windows\\notepad.exe";
- //文件名必須加后綴。
- process.Start();
程序完成。
注意:在asp.net2.0中運(yùn)行以上兩種方法寫的程序都可以得到想要的結(jié)果。但是在asp.net1.1或更早的版本卻不能得到想要的結(jié)果,打開任務(wù)治理器甚至可以看到進(jìn)程已經(jīng)存在(編譯器也沒(méi)有報(bào)錯(cuò)),但就是看不到執(zhí)行效果,這是微軟為了安全原因禁掉了程序的運(yùn)行,你需要做以下兩步才能正常運(yùn)行:
1、在桌面右鍵單擊“我的電腦”,選擇治理,展開“服務(wù)和應(yīng)用程序”節(jié)點(diǎn),選擇“服務(wù)”項(xiàng);從右側(cè)的服務(wù)列表中找到“IIS Admin”項(xiàng),右擊鼠標(biāo),選擇“屬性”,在屬性框中打開“登陸”頁(yè),勾選“本地系統(tǒng)帳戶”下的“答應(yīng)與桌面交互”項(xiàng),點(diǎn)擊確定。重新啟動(dòng)這項(xiàng)服務(wù)。
2、打開目錄“C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG”中的machine.config文件,找到“processModel”項(xiàng),原來(lái)這項(xiàng)中有一個(gè)屬性是userName="machine",將machine改為“system”,保存文件,修改完畢。
現(xiàn)在再運(yùn)行以前的程序可以看到期望的結(jié)果:ASP.NET中執(zhí)行windows程序notepad.exe。
以上程序在IIS5.0中可正常運(yùn)行。
【編輯推薦】