2010-08-11 67 views
0

我已經編寫了使用.bat文件(代碼:rwvinstat/server:servername)填充登錄到c#中的終端服務會話的用戶的DataGrid的代碼。 .bat與應用程序一起存在於服務器上。文件,並將正確運行,如果在服務器上手動執行。如果我運行該應用程序。並在服務器上調用.bat文件,它工作正常。C#asp.net通過loacl intranet斷開用戶終端服務會話

問題是,當我在服務器上部署我的Web應用程序時,DataGrid永遠不會填充,也不會出現任何錯誤。我給了IUSER_MACHINENAME(和各種用戶)的完全權限,我設置了虛擬目錄的權限來讀取,運行,執行。 Ialso已設置我的web.conf圖到:< 「身份冒充=」 真」的userName = 「用戶名」 密碼= 「密碼」/>

這裏是我的源代碼:

 using System; 
     using System.Collections; 
     using System.Configuration; 
     using System.Data; 
     using System.Linq; 
     using System.Web; 
     using System.Web.Security; 
     using System.Web.UI; 
     using System.Web.UI.HtmlControls; 
     using System.Web.UI.WebControls; 
     using System.Web.UI.WebControls.WebParts; 
     using System.Xml.Linq; 
     using System.Text; 
     using System.Runtime.InteropServices; 
     using System.Text.RegularExpressions; 
     using System.IO; 

     public partial class ilsap01_users : System.Web.UI.Page 
     { 

      protected void Page_Load(object sender, EventArgs e) 
      { 

    System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("C:\\listUsersIlsap01.bat"); 
    psi.RedirectStandardOutput = true; 
    psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
    psi.UseShellExecute = false; 
    System.Diagnostics.Process listFiles; 
    listFiles = System.Diagnostics.Process.Start(psi); 
    System.IO.StreamReader rawUserData = listFiles.StandardOutput; 
    listFiles.WaitForExit(20000); 
    try 
    { 
     DataTable table2 = new DataTable(); 
     table2.Columns.Add(new DataColumn("UserName", typeof(string))); 
     table2.Columns.Add(new DataColumn("SessionId", typeof(string))); 

     String myString = rawUserData.ReadToEnd(); 

     string exp = @"([\w_]+)"; ; 


     MatchCollection matches = Regex.Matches(myString, exp, RegexOptions.IgnoreCase); 

     IEnumerator en = matches.GetEnumerator(); 
     if (en.MoveNext()) 
     { 
      while (en.MoveNext()) 
      { 


       Match match = (Match)en.Current; 

       if (en.Current.ToString() == "rdpwd") 
       { 
        if (en.MoveNext()) 
        { 
         if (en.Current.ToString() == "rdp") 
         { 
          en.MoveNext(); 
          en.MoveNext(); 
          en.MoveNext(); 

          Match match_Item = (Match)en.Current; 

          string item = match_Item.Value; 

          en.MoveNext(); 

          Match match_Item2 = (Match)en.Current; 

          string item2 = match_Item2.Value; 

          DataRow row = table2.NewRow(); 
          row[0] = item.Split()[0]; 
          row[1] = item2.Split()[0]; 

          table2.Rows.Add(row); 

         } 
        } 
       } 
      } 
     } 

     this.displayUsers.DataSource = table2; 
     this.displayUsers.DataBind(); 
    } 

    catch (Exception ex) 
    { 
     Response.Write(ex); 
    } 
} 
protected void dg_SelectedIndexChanged(object sender, EventArgs e) 
{ 

} 
protected void Button2_Click(object sender, EventArgs e) 
{ 
    Response.Redirect("ILSRF01_USERS.ASPX"); 
} 
protected void Button1_Click(object sender, EventArgs e) 
{ 

} 
} 

回答

0

是可執行文件該批處理文件正在調用(rwvinstat)在系統路徑中?您可能需要顯式調用它 - c:\ windows \ system32 \ rwvinstat.exe或它位於任何位置

相關問題