从iis运行mmc.exe services.msc“

时间:2012-12-08 10:05:36

标签: c# asp.net iis

http://www.lansweeper.com/具有允许用户从Web应用程序执行某些操作(如远程计算机管理等)的功能。我需要在我的Asp.Net c#web应用程序中部署它。当我构建我的项目时,我通过代码打击来实现它但是当我尝试从IIS运行它时它不起作用,只是没有任何反应。

请帮助和想法。没遇到错误

protected void lnkComputermanagement_Click(object sender, EventArgs e)
{
    try
    {
        long InfoID = Convert.ToInt64(txtInfoID.Text);
        IBAPanel.NetworkSupport.WMIInfo WMIInfo = new IBAPanel.NetworkSupport.WMIInfo();
        WMIInfo = WMIInfo.Get(Convert.ToInt32(InfoID));
        string ComName = WMIInfo.ComputerName1;
        string Pass = WMIInfo.Password;

        if (WMIInfo.UserName != "" && WMIInfo.ComputerName1 != "" && WMIInfo.Password != "")
        {
            string Usname = WMIInfo.UserName.Substring(2);

            ProcessStartInfo startInfo = new ProcessStartInfo();
            Process myprocess = new Process();
            myprocess.StartInfo.CreateNoWindow = true;
            myprocess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            myprocess.StartInfo.UseShellExecute = false;
            myprocess.StartInfo.Verb = "runas";
            myprocess.StartInfo.FileName = "cmd.exe";
            myprocess.StartInfo.UserName = Usname;
            myprocess.StartInfo.Password = MakeSecureString(Pass);
            myprocess.StartInfo.Arguments = "/C mmc.exe compmgmt.msc /computer:" + ComName;
            myprocess.Start();
            myprocess.Close();
        }

        Response.Redirect("content.aspx?lan=fa&gid=524&InfoID=" + InfoID);

        ActionJquery();
    }
    catch (Exception ex)
    {
        System.Text.StringBuilder cstext1 = new System.Text.StringBuilder();
        cstext1.Append(" $(document).ready(function () {");
        cstext1.Append("alert(" + ex.Message + ")  ");
        cstext1.Append(" });  ");
        Page.ClientScript.RegisterStartupScript(typeof(Page), "", cstext1.ToString(), true);
    }
}

2 个答案:

答案 0 :(得分:1)

您正在启动命令" mmc.exe"在网络服务器上,而不是在浏览网站的客户端上。如果查看Web服务器上的taskmanager,您将看到正在运行的多个mmc.exe进程。

答案 1 :(得分:0)

要从Web管理Windows服务,您需要特殊权限,而不能通过Services.msc,您需要使用WMI(Windows管理工具),您需要为应用程序池提供更高的权限,但最好的方法是在你获取服务信息的地方冒充你的代码。

具有完整WMI使用率的良好开源项目是Codeplex上的Services +:

Services+ On CodePlex

由于