zoukankan      html  css  js  c++  java
  • asp.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"nullnull1);

    //文件名可以不加后缀,如"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是以服务器本地方法运行。

  • 相关阅读:
    eslint 的 env 配置是干嘛使的?
    cookie httpOnly 打勾
    如何定制 antd 的样式(theme)
    剑指 Offer 66. 构建乘积数组
    剑指 Offer 65. 不用加减乘除做加法
    剑指 Offer 62. 圆圈中最后剩下的数字
    剑指 Offer 61. 扑克牌中的顺子
    剑指 Offer 59
    剑指 Offer 58
    剑指 Offer 58
  • 原文地址:https://www.cnblogs.com/sonicit/p/1161256.html
Copyright © 2011-2022 走看看