회사 임직원들


불법 s/w 때문에 골치입니다.


특히 알약,알집 이 멍멍이들.




소프트웨어 관리/감사 프로그램 견적 받아서 진행하다가,,막판에 가격이 틀어져


저한테 개발 지시가 내려졌습니다.



사용자:agent 깔림, updater가 agent 버전체크 후 agent 실행.


관리자:agent에서 수집된 정보와 등록된 s/w갯수 비교

        사용자에게 uninstall 명령 및 메시지 전송



---------------------------------

처음에 agent의 exe파일 모조리 수집해서  소프트웨어협회 db랑 비교 하다가


속도 때문에 빡쳐서 ,,그냥 제어판 registry 정보로 퉁침.



하드웨어 정보는....가끔 노트븍/데스크탑 메모리 빼가는 직원들이 있어서.



 private DataTable GetInstalledApps()

        {

            DataTable dt = new DataTable();

            DataRow row = null;


            dt.Columns.Add(new DataColumn("SEQ", typeof(string)));

            dt.Columns.Add(new DataColumn("PGM_NAME", typeof(string)));

            dt.Columns.Add(new DataColumn("VENDOR", typeof(string)));

            dt.Columns.Add(new DataColumn("VERSION", typeof(string)));

            dt.Columns.Add(new DataColumn("EMAIL", typeof(string)));

            dt.Columns.Add(new DataColumn("NAME", typeof(string)));

            dt.Columns.Add(new DataColumn("UNINSTALL", typeof(string)));

           


            int i = 0;


            RegistryKey regKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WONJIN\EMAIL");

            string email = regKey.GetValue("EMAIL").ToString();

           string name = regKey.GetValue("NAME").ToString();



            string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";

            using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))

            {

                foreach (string skName in rk.GetSubKeyNames())

                {

                    using (RegistryKey sk = rk.OpenSubKey(skName))

                    {

                        try

                        {

                            if (sk.GetValue("DisplayName").ToString() == "" || sk.GetValue("UninstallString").ToString() == "")

                                continue;


                            i = i + 1;

                            row = dt.NewRow();

                            row["SEQ"] = i.ToString();

                            row["PGM_NAME"] = sk.GetValue("DisplayName");

                            

                            if (sk.GetValue("Publisher").ToString().Trim() == "")

                                row["VENDOR"] = "-";

                            else

                                row["VENDOR"] = sk.GetValue("Publisher");


                            if (sk.GetValue("DisplayVersion").ToString().Trim() == "")

                                row["VERSION"] = "1";

                            else

                                row["VERSION"] = sk.GetValue("DisplayVersion");

                            

                            row["EMAIL"] = email;

                            row["NAME"] = name;

                            row["UNINSTALL"] = sk.GetValue("UninstallString");

                           

                            dt.Rows.Add(row);

                        }

                        catch (Exception ex)

                        { }

                    }

                }

            }


            return dt;

        }


        private DataTable GetInstalledHW()

        {


            DataTable dt = new DataTable();

            DataRow row = null;


            dt.Columns.Add(new DataColumn("SEQ", typeof(string)));

            dt.Columns.Add(new DataColumn("EMAIL", typeof(string)));

            dt.Columns.Add(new DataColumn("NAME", typeof(string)));

            dt.Columns.Add(new DataColumn("CPU", typeof(string)));

            dt.Columns.Add(new DataColumn("RAM", typeof(string)));

            dt.Columns.Add(new DataColumn("MB", typeof(string)));

            dt.Columns.Add(new DataColumn("VGA", typeof(string)));

            dt.Columns.Add(new DataColumn("HDD", typeof(string)));

            dt.Columns.Add(new DataColumn("HDD_SIZE", typeof(string)));

            dt.Columns.Add(new DataColumn("SYSTEMNAME", typeof(string)));


            int i = 0;


            RegistryKey regKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WONJIN\EMAIL");

            string email = regKey.GetValue("EMAIL").ToString();

            string name = regKey.GetValue("NAME").ToString();


            row = dt.NewRow();

           // cpu

            row["EMAIL"] = email;

            row["NAME"] = name;


            try

            {

                ManagementObjectSearcher cpu = new ManagementObjectSearcher("select * from Win32_Processor");

                foreach (ManagementObject mo in cpu.Get())

                {

                    row["CPU"] = mo["Name"].ToString();

                    row["SYSTEMNAME"] = mo["SystemName"].ToString();

                }


                //RAM

                double capa = 0;

                ManagementObjectSearcher ram = new ManagementObjectSearcher("select * from Win32_PhysicalMemory");

                foreach (ManagementObject mo in ram.Get())

                {

                    capa = capa + double.Parse(mo["Capacity"].ToString());


                }

                capa = capa / 1024 / 1024; //megabyte

                row["RAM"] = capa;


                //MB

                ManagementObjectSearcher mb = new ManagementObjectSearcher("select * from Win32_BaseBoard");

                foreach (ManagementObject mo in mb.Get())

                {

                    row["MB"] = mo["Product"].ToString();

                }


                //vga

                ManagementObjectSearcher vga = new ManagementObjectSearcher("select * from Win32_DisplayConfiguration");

                foreach (ManagementObject mo in vga.Get())

                {

                    row["VGA"] = mo["Description"].ToString();

                }


                //HDD

                ManagementObjectSearcher hdd = new ManagementObjectSearcher("select * from Win32_DiskDrive");

                foreach (ManagementObject mo in hdd.Get())

                {

                    row["HDD"] = mo["Model"].ToString();

                    row["HDD_SIZE"] = mo["size"].ToString();

                }


                dt.Rows.Add(row);

                return dt;

            }


            catch(Exception e)

            {

                dt.Rows.Add(row);

                return dt;

            }

        }