Asp.net中執行.EXE程式的方法

來源:互聯網
上載者:User

在無意中看到了網頁中執行.exe應用程式的方法:

1、用.NET Framework中的Process類

添加引用using System.Diagnostics;

在按鈕的單擊事件處理常式中填入以下代碼:

protected void Button1_Click(object sender, EventArgs e)
    {

     Process pro = new Process();

     pro.StartInfo.FileName = "c:\\windows\\notepad.exe";

     //檔案名稱可以省略尾碼

     pro.Start();

}

程式完成。

2、調用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函數:

protected void Button1_Click(object sender, EventArgs e)
    {

     ShellExecute(IntPtr.Zero, "open", "c:\\windows\\notepad.exe", null, null, 1);

     //檔案名稱可以不加尾碼,如"c:\\windows\\notepad"

}

程式完成

注意:在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以上可正常運行。

 

如果大家還有其它什麼好的辦法,感謝提出~

共同交流、學習~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.