예제 #1
0
파일: Main.cs 프로젝트: mamcer/soulstone
        private void bwComputers_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            string hostName;

            _totalFileFound = 0;
            try
            {
                //Computers on Domain
                CompEnum computers = NSearcher.GetComputersOnDomain(_selectedNetwork);
                _totalTime = DateTime.Now;
                int      currentComputer = 1;
                DateTime hostScanTime;
                int      totalComputerCount = computers.Length;
                if (_configurationInfo.SelectedHostList != null && _configurationInfo.SelectedHostList.Count > 0)
                {
                    totalComputerCount = _configurationInfo.SelectedHostList.Count;
                }
                foreach (CompEnum.NetworkComputers nc in computers)
                {
                    hostName     = nc.Name;
                    hostScanTime = DateTime.Now;
                    if (_configurationInfo.SelectedHostList == null || _configurationInfo.SelectedHostList.Count == 0 || _configurationInfo.SelectedHostList.Contains(hostName))
                    {
                        if (!_configurationInfo.ScanOnlyNewHosts || (_configurationInfo.ScanOnlyNewHosts && !DBLayer.HostExists(hostName)))
                        {
                            lblHostProgress.Invoke(new MethodInvoker(delegate() { lblHostProgress.Text = string.Format("{0} of {1}", currentComputer++, totalComputerCount); }));
                            lbConsole.Invoke(new MethodInvoker(delegate() { lbConsole.Items.Add(string.Format("{0} - {1} scan started", hostScanTime.ToShortTimeString(), hostName)); }));
                            txtCurrentHost.Invoke(new MethodInvoker(delegate(){ txtCurrentHost.Text = hostName; }));
                            DBLayer.CreateHost(hostName);
                            string sharePath;
                            //Shares for computer
                            foreach (Share s in NSearcher.GetSharesForComputer(hostName))
                            {
                                if (s.ShareType == ShareType.Device || s.ShareType == ShareType.Disk)
                                {
                                    sharePath = s.Root.FullName;
                                    ScanFolder(sharePath, "   ", hostName, sharePath, 1);
                                }
                            }
                            TimeSpan hostScanSpan = DateTime.Now.Subtract(hostScanTime);
                            lbConsole.Invoke(new MethodInvoker(delegate() { lbConsole.Items.Add(string.Format("{0} - {1} scan finished, took {2} minutes {3} seconds {4} milliseconds", DateTime.Now.ToShortTimeString(), hostName, hostScanSpan.Minutes, hostScanSpan.Seconds, hostScanSpan.Milliseconds)); }));
                        }
                    }
                }
                TimeSpan totalTimeSpan = DateTime.Now.Subtract(_totalTime);
                lbConsole.Invoke(new MethodInvoker(delegate() { lbConsole.Items.Add(string.Format("Total: {0} files, took {1} minutes, {2} seconds, {3} milliseconds", _totalFileFound, totalTimeSpan.Minutes, totalTimeSpan.Seconds, totalTimeSpan.Milliseconds)); }));
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + ex.InnerException + ex.StackTrace);
            }
            gbSearch.Invoke(new MethodInvoker(delegate() { gbSearch.Enabled = true; }));
            lbConsole.Invoke(new MethodInvoker(delegate() { lbConsole.Items.Add(string.Format("Scan finished")); }));
        }
예제 #2
0
        private void bwComputers_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            gbSearch.Enabled = false;
            lbConsole.Items.Clear();
            string hostName;

            _totalFileFound = 0;
            //CompEnum ce = NSearcher.GetComputersOnDomain(cmbDomains.SelectedItem.ToString());
            try
            {
                CompEnum computers       = NSearcher.GetComputersOnDomain(cmbDomains.SelectedItem.ToString());
                int      currentComputer = 1;
                foreach (CompEnum.NetworkComputers nc in computers)
                {
                    lblHostProgress.Text = string.Format("{0} of {1}", currentComputer++, computers.Length);
                    hostName             = nc.Name;
                    lbConsole.Invoke(new MethodInvoker(delegate() { lbConsole.Items.Add(hostName); }));
                    txtCurrentHost.Text = hostName;
                    DBLayer.CreateOrUpdateHost(hostName);
                    string sharePath;
                    foreach (Share s in NSearcher.GetSharesForComputer(hostName))
                    {
                        if (s.ShareType == ShareType.Device || s.ShareType == ShareType.Disk)
                        {
                            sharePath = s.Root.FullName;
                            DBLayer.CreateOrUpdateHostShare(hostName, sharePath);
                            ScanFolder(sharePath, "   ", hostName, sharePath);
                        }
                    }
                }
                lbConsole.Invoke(new MethodInvoker(delegate() { lbConsole.Items.Add(string.Format("Total:{0}", _totalFileFound)); }));
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            gbSearch.Enabled = true;
        }