我创建了一个.bat文件,显示Windows终端服务中记录的所有用户。 我可以在后面的c#代码中执行.bat文件,并在标签或文本框中以纯文本显示结果。我想做的是数据绑定数据网格中的用户名和会话ID。
protected void Button1_Click(object sender, EventArgs e)
{
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(@"C:\listfiles.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 myOutput = listFiles.StandardOutput;
listFiles.WaitForExit(2000);
if (listFiles.HasExited)
{
string output = myOutput.ReadToEnd();
// this.TextBox1.Text = output;
}
}
答案 0 :(得分:2)
您可以尝试这样的事情:
string[] input = myOutput.ReadToEnd().Split('\n');
DataTable table = new DataTable();
table.Columns.Add(new DataColumn("UserName", typeof(string)));
table.Columns.Add(new DataColumn("SessionId", typeof(string)));
foreach (string item in input)
{
DataRow row = table.NewRow();
row[0] = item.Split(',')[0];
row[1] = item.Split(',')[1];
table.Rows.Add(row);
}
myGridView.DataSource = table;
// for WebForms:
myGridView.DataBind();
当然你会想:
答案 1 :(得分:1)
不是依赖于运行.bat文件,为什么不直接使用远程桌面服务API这样做呢?
http://msdn.microsoft.com/en-us/library/aa383459%28VS.85%29.aspx
或者也许使用Wmi:
http://gallery.technet.microsoft.com/ScriptCenter/en-us/f053de86-f053-474b-9b21-f2e6b161948f
答案 2 :(得分:0)
您可以在内存中创建DataTable,为username和sessionid添加列。 在循环中,基于分离字符(逗号?分号?)split()输出字符串,并根据该字符串向表中添加行。
然后将其设置为网格和数据绑定的数据源。
或者,您可以使用其他类型的集合。
答案 3 :(得分:0)
您可以创建一个xml结构,然后将数据网格绑定到该结构。