none
如何在asp.net中运行外部程序,权限如何配置? RRS feed

  • 问题

  • 我们页面上的一个Activex控件经常因为服务端错误不能运行,而我们一时又找不服务器端错误原因在哪里,只能通过在页面上重启Activex服务器端的相关服务来应急,现在的问题是:下面的test.cmd可以运行,但停止服务和启动服务的语句没有执行;我不知如何配置iis和其他相关权限,恳求高手相助?

    页面代码:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title></title>
    </head>
    <body>
      <form id="form1" runat="server">
        <div>
          <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">重启服务</asp:LinkButton>
        </div>
        <input id="Button1" type="button" value="test" onclick='test()' />
      </form>
    </body>
    </html>
    
    

    后台代码:

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class _Default : System.Web.UI.Page
    {
      protected void Page_Load(object sender, EventArgs e)
      {
    
      }
      protected void LinkButton1_Click(object sender, EventArgs e)
      {
        System.Diagnostics.ProcessStartInfo p = new System.Diagnostics.ProcessStartInfo();
        p.FileName = Server.MapPath("~/test.cmd");
        p.WorkingDirectory = Server.MapPath("~");
        //p.UserName = "mint";
        //System.Security.SecureString a = new System.Security.SecureString();
        //a.Clear();
        //foreach (char c in "mint".ToCharArray())
        //  a.AppendChar(c);
        //p.Password = a;
        //Response.Write("密码:" + p.Password.ToString());
        p.CreateNoWindow = false;
        p.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
        p.UseShellExecute = false;
        System.Diagnostics.Process proc = System.Diagnostics.Process.Start(p);
        proc.Close();
      }
    }
    

    test.cmd脚本:

    @echo off
    
    @echo test >>log.txt
    
    net start "ASP.NET 状态服务" >>log.txt
    net stop "ASP.NET 状态服务" >>log.txt
    
    
    2010年12月21日 2:10

答案

全部回复

  • 一般可以:

    1更改应用程序池 里面的“标识”账户

    2web.config进行模拟


    【孟子E章】
    • 已标记为答案 yymqt 2010年12月23日 3:09
    2010年12月21日 5:06
    版主
  • 非常感谢,已经解决了。是使用 应用程序池的标识账户,不过在win2003下一定要选“本地系统”不能选“本地服务”;我之前就是选“本地服务”不行才发帖的。
    2010年12月23日 3:09