asp.net中執行exe應用程式,終極解決方案。

來源:互聯網
上載者:User

在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中可正常運行。

      以上是從別人的BLOG中轉載的,但是其中有一點沒有說明,在WIN2003系統中,按上面的方法只能
看到進程,無法執行程式,解決方案為:在網站所對應的程式池,點擊屬性->標識,把“網路服務”改成“本地系統”,這樣在ASP.net中調用的EXE是以伺服器本地方法運行。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.