首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > ASP >

ASP.NET调用cmd命令提示符回绝访问解决方案

2012-09-09 
ASP.NET调用cmd命令提示符拒绝访问解决方案最近做关于Windows Server POP3服务器的小项目,翻遍网络,也没能

ASP.NET调用cmd命令提示符拒绝访问解决方案

         最近做关于Windows Server POP3服务器的小项目,翻遍网络,也没能找到接口。

         值得庆幸的是最终发现了一个控制台接口winpop.exe,也就是用cmd命令提示符与POP3服务器交互。

         这样实属无奈之举,用cmd命令效率低不说,而且获取、分析返回信息相当麻烦。然而这还不算什么,最主要的是:B/S模式下,网页程序有权限调用cmd吗?

         这里调用cmd,当然不是调用客户机器上的cmd,而是服务器上的cmd,这样心里还有点底。

         小心翼翼的在我电脑上做了实验,成功在aspx页面中调用cmd,并执行了ping命令,而且顺利获取、分析返回信息。

         于是我满怀信心的把测试程序发布到了服务器上,也是顺利执行!核心代码如下:




         找到【标识】选项卡,再找到【预定义账户】,在后边的下拉菜单中选择“本地系统”就可以了!

ASP.NET调用cmd命令提示符回绝访问解决方案


         这样一来,你的网站就可以随心所欲的执行cmd命令了,其实不仅仅是执行cmd命令,简直是至高无上的权限!

         提醒一下,这样更改的是应用程序池权限,因此所有使用这个应用程序池的网站都有很高的权限,这是相当危险的,还须谨慎使用!!

         作为完整的解决方案,还需要提一点。

         调用cmd执行命令时,可以指定用户(用户是指系统用户,也就是登录电脑时用的帐号密码),这样也可以获得一定的权限。代码如下:

using System.Diagnostics;using System.IO;/// <summary>/// cmd命令执行助手类/// </summary>public class CMDHelper{    private Process p = null;    private StreamReader reader = null;    /// <summary>    /// 通过cmd执行ping命令    /// </summary>    /// <param name="cmdString">命令内容</param>    /// <returns>命令执行结果</returns>    public string execute(string cmdString)     {        ProcessStartInfo start = new ProcessStartInfo("cmd.exe");        start.FileName = "ping";        start.Arguments = cmdString;        start.CreateNoWindow = true;        start.RedirectStandardOutput = true;        start.RedirectStandardInput = true;        start.UseShellExecute = false;        start.WorkingDirectory = "C:\\WINDOWS\\system32";                start.UserName = "administrator"; //指定用户        //构造用户密码,假定密码为123,必须一个字符一个字符的添加        System.Security.SecureString password = new System.Security.SecureString();        password.AppendChar('1');        password.AppendChar('2');        password.AppendChar('3');        start.Password = password;                p = Process.Start(start);        reader = p.StandardOutput;        string line = "";        string lineTemp = "";         //逐行读出返回的数据,并做一定处理,方便解析        while (!reader.EndOfStream)        {            lineTemp = reader.ReadLine();//读出一行            //将空行用*号表示            if (lineTemp == "")            {                line += "*";            }            else            {                line += lineTemp;            }        }        return line;    }}

         但是本人在Windows Server2003下测试失败,只要指定用户,网页程序就挂起,直到响应超时,原因未知。

热点排行