从远程机器获取环境变量非常慢

时间:2014-06-29 10:55:26

标签: c# .net winapi

我使用以下代码从远程计算机中检索环境变量

问题是,代码运行需要很长时间。

    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/但它没有检索环境变量的方法

0 个答案:

没有答案