我使用以下代码从远程计算机中检索环境变量
问题是,代码运行需要很长时间。
DataTable envVarliables = new DataTable();
envVarliables.Columns.Add("UserName");
envVarliables.Columns.Add("VarName");
envVarliables.Columns.Add("VarValue");
ManagementObjectSearcher query = null;
ManagementObjectCollection queryCollection = null;
ConnectionOptions opt = new ConnectionOptions();
opt.Impersonation = ImpersonationLevel.Impersonate;
opt.EnablePrivileges = true;
opt.Username = @"domain\user";
opt.Password = @"password";
try
{
ManagementPath p = new ManagementPath(@"\\servername" + "\\root\\cimv2");
ManagementScope msc = new ManagementScope(p, opt);
SelectQuery q = new SelectQuery("select * from Win32_Environment where Name='IBMSENV' ");
query = new ManagementObjectSearcher(msc, q, null);
queryCollection = query.Get();
//Console.WriteLine(queryCollection.Count);
List<string> temp = new List<string>();
foreach (ManagementBaseObject envVar in queryCollection)
{
if (envVar["Name"].ToString() == "MYENVVARNAME")
{
envVarliables.Rows.Add(envVar["UserName"].ToString(), envVar["Name"].ToString(),
envVar["VariableValue"].ToString());
}
envVar["VariableValue"].ToString());
//temp.Add(envVar["Name"].ToString());
}
return envVarliables;
我的问题在于foreach (ManagementBaseObject envVar in queryCollection)
行
第一次到达那条线时需要大约30秒到1.5分钟甚至更长时间。
之后它会循环很快。
问题是,我可以增强一些东西以使其更快地运作吗?
另一个问题,还有另一种从远程机器获取数据的方法吗? 例如,从我使用的远程机器获取其他数据 https://code.google.com/p/cassia/但它没有检索环境变量的方法