Exemple #1
0
        public static string GetHardwareFromDB(string compName)
        {
            string result = "";

            CompInfoContext db   = new CompInfoContext();
            Computer        comp = db.Computers.FirstOrDefault(c => c.Name == compName);

            if (comp != null)
            {
                result += comp.Name + " " + comp.IP + "\n" + comp.User + "\n" + comp.OS + "\n" + comp.Motherboard;
                var procs = db.Processors.Where(p => p.ComputerId == comp.Id);
                foreach (Processor proc in procs)
                {
                    result += "\n" + "Processor: " + proc.Name + " " + proc.Frequency.ToString() + "GHz";
                }
                var rams = db.RAMs.Where(r => r.ComputerId == comp.Id);
                foreach (RAM ram in rams)
                {
                    result += "\n" + "RAM: " + ram.Capacity.ToString() + "MB " + ram.Speed.ToString();
                }
                var hards = db.HardDisks.Where(h => h.ComputerId == comp.Id);
                foreach (HardDisk hard in hards)
                {
                    result += "\n" + "HardDisk: " + hard.Name + " " + hard.Size.ToString() + "GB";
                }
                var prints = db.Printers.Where(p => p.ComputerId == comp.Id);
                foreach (Printer print in prints)
                {
                    result += "\n" + "Printer: " + print.Name;
                }
            }
            else
            {
                result = "Данных о компьютере нет в базе";
            }

            return(result);
        }
Exemple #2
0
        public static string hardwareScan(string compName)
        {
            CompInfoContext db = new CompInfoContext();

            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    Ping      pinger = new Ping();
                    PingReply reply  = pinger.Send(compName, 100);
                    if (reply.Status == IPStatus.Success)
                    {
                        string      ip          = "";
                        IPAddress[] ipaddresses = Dns.GetHostAddresses(compName);
                        foreach (IPAddress addr in ipaddresses)
                        {
                            byte[] b_ipaddress = addr.GetAddressBytes();
                            if ((b_ipaddress[0] == 172) && (b_ipaddress[1] == 16))
                            {
                                ip = addr.ToString();
                            }
                            break;
                        }

                        ConnectionOptions con_options = new ConnectionOptions();
                        con_options.Username = compName + @"\Администратор";
                        con_options.Password = "******";
                        ManagementScope scope = new ManagementScope(@"\\" + compName + @"\root\cimv2", con_options);
                        scope.Connect();

                        #region получение информации о компе
                        Computer comp = db.Computers.FirstOrDefault(c => c.Name == compName);
                        if (comp == null)
                        {
                            comp = new Computer(); db.Computers.Add(comp); comp.Name = compName;
                        }

                        comp.IP = ip;

                        //информация об операционной системе
                        ObjectQuery query2 = new ObjectQuery("select Caption, CSDVersion, Version from Win32_OperatingSystem");
                        ManagementObjectSearcher searcher2 = new ManagementObjectSearcher(scope, query2);
                        foreach (ManagementObject sys in searcher2.Get())
                        {
                            comp.OS = sys["Caption"] + " " + sys["Version"] + " " + sys["CSDVersion"];
                        }

                        //информация о текущем пользователе
                        ObjectQuery query1 = new ObjectQuery("select UserName from Win32_ComputerSystem");
                        ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(scope, query1);
                        foreach (ManagementObject username in searcher1.Get())
                        {
                            comp.User = username["UserName"].ToString();
                        }

                        //информация о материнской плате
                        ObjectQuery query4 = new ObjectQuery("select Manufacturer, Product from Win32_BaseBoard");
                        ManagementObjectSearcher searcher4 = new ManagementObjectSearcher(scope, query4);
                        foreach (ManagementObject mother in searcher4.Get())
                        {
                            comp.Motherboard = mother["Manufacturer"] + " " + mother["Product"];
                        }

                        //информация о принтерах
                        ObjectQuery query7 = new ObjectQuery("select Caption, PortName from Win32_Printer where PortName like 'COM%' or PortName like 'LPT%' or PortName like 'USB%'");
                        ManagementObjectSearcher searcher7 = new ManagementObjectSearcher(scope, query7);
                        db.Printers.RemoveRange(db.Printers.Where(p => p.ComputerId == comp.Id));
                        foreach (ManagementObject printer in searcher7.Get())
                        {
                            Printer print = new Printer
                            {
                                Name     = printer["Caption"].ToString(),
                                Computer = comp
                            };
                            db.Printers.Add(print);
                        }

                        //информация о жестких дисках
                        ObjectQuery query6 = new ObjectQuery("select Caption, Model, Size from Win32_DiskDrive");
                        ManagementObjectSearcher searcher6 = new ManagementObjectSearcher(scope, query6);
                        db.HardDisks.RemoveRange(db.HardDisks.Where(h => h.ComputerId == comp.Id));
                        foreach (ManagementObject harddisk in searcher6.Get())
                        {
                            HardDisk hard = new HardDisk
                            {
                                Name     = harddisk["Caption"].ToString(),
                                Size     = (float)Math.Round(Convert.ToDouble(harddisk["Size"]) / 1024 / 1024 / 1024, 0),
                                Computer = comp
                            };
                            db.HardDisks.Add(hard);
                        }

                        //информация об объеме оперативной памяти
                        ObjectQuery query5 = new ObjectQuery("select BankLabel, Capacity, MemoryType, Speed from Win32_PhysicalMemory");
                        ManagementObjectSearcher searcher5 = new ManagementObjectSearcher(scope, query5);
                        db.RAMs.RemoveRange(db.RAMs.Where(r => r.ComputerId == comp.Id));
                        foreach (ManagementObject memory in searcher5.Get())
                        {
                            RAM ram = new RAM();
                            ram.Capacity = (float)Math.Round(Convert.ToDouble(memory["Capacity"]) / 1024 / 1024, 0);
                            if (memory["Speed"] != null)
                            {
                                ram.Speed = Convert.ToInt64(memory["Speed"]);
                            }
                            ram.Computer = comp;
                            db.RAMs.Add(ram);
                        }

                        //информация о процессоре
                        ObjectQuery query3 = new ObjectQuery("select MaxClockSpeed, Name from Win32_Processor where ProcessorType = 3");
                        ManagementObjectSearcher searcher3 = new ManagementObjectSearcher(scope, query3);
                        db.Processors.RemoveRange(db.Processors.Where(p => p.ComputerId == comp.Id));
                        foreach (ManagementObject cpu in searcher3.Get())
                        {
                            Processor proc = new Processor
                            {
                                Name      = cpu["Name"].ToString(),
                                Frequency = (float)Math.Round(Convert.ToDouble(cpu["MaxClockSpeed"]) / 1000, 2),
                                Computer  = comp
                            };
                            db.Processors.Add(proc);
                        }
                        #endregion
                    }
                    db.SaveChanges();
                    transaction.Commit();
                    return("Success");
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    return(ex.Message);
                }
            }
        }