Пример #1
0
        private void ctxMnuComputer_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            Logger.EnteringMethod();
            Credentials cred = Credentials.GetInstance();

            lblCredentials.Text = cred.CredentialNotice;
            Logger.Write(lblCredentials);

            List <ADComputer>  targetComputers = new List <ADComputer>();
            FrmRemoteExecution remoteExecution = new FrmRemoteExecution();

            Logger.Write(dtGrdVResult.SelectedRows.Count + " computers selected.");

            foreach (DataGridViewRow row in dtGrdVResult.SelectedRows)
            {
                Logger.Write("Selecting " + row.Cells[0].Value.ToString());
                targetComputers.Add((ADComputer)row.Cells[0].Value);
            }

            ctxMnuComputer.Hide();
            switch (e.ClickedItem.Name)
            {
            case "GetWsusClientID":
                btnGetSusClientID_Click(null, null);
                break;

            case "ResetWsusClientID":
                btnResetWsusClientID_Click(null, null);
                break;

            case "StartService":
                Logger.Write("Start Service");
                if (dtGrdVResult.SelectedRows.Count != 0)
                {
                    if (cred.InitializeCredential() == false)
                    {
                        return;
                    }
                }
                _aborting = false;
                ManageService("wuauserv", "StartService", cred.Login, cred.Password);
                break;

            case "StopService":
                Logger.Write("Stop Service");
                if (dtGrdVResult.SelectedRows.Count != 0)
                {
                    if (cred.InitializeCredential() == false)
                    {
                        return;
                    }
                }
                _aborting = false;
                ManageService("wuauserv", "StopService", cred.Login, cred.Password);
                break;

            case "RestartService":
                Logger.Write("Restart Service");
                if (dtGrdVResult.SelectedRows.Count != 0)
                {
                    if (cred.InitializeCredential() == false)
                    {
                        return;
                    }
                }
                _aborting = false;
                ManageService("wuauserv", "RestartService", cred.Login, cred.Password);
                break;

            case "QueryServiceStatus":
                Logger.Write("Querying Service Status");
                this.Cursor = Cursors.WaitCursor;
                _wrongCrendentialsWatcher = new WrongCredentialsWatcher();
                _aborting = false;
                GetWuAuServiceStatus();
                this.Cursor = Cursors.Default;
                break;

            case "ShowWindowsUpdateLog":
                Logger.Write("Show WindowsUPdateLog");
                if (cred.InitializeCredential() == false)
                {
                    return;
                }
                this.Cursor = Cursors.WaitCursor;
                ADComputer computer = new ADComputer(dtGrdVResult.SelectedRows[0].Cells["ComputerName"].Value.ToString());
                if (!chkBxDontPing.Checked && !computer.Ping((int)nupPingTimeout.Value))
                {
                    MessageBox.Show(resMan.GetString("ComputerUnreachable"));
                }
                else
                {
                    computer.OpenWindowsUpdateLog(cred.Login, cred.Password);
                }
                this.Cursor = Cursors.Default;
                break;

            case "SendDetectNow":
                Logger.Write("Send DetectNow");
                remoteExecution.Show(this);
                remoteExecution.SendDetectNow(targetComputers, cred.Login, cred.Password);
                break;

            case "SendReportNow":
                Logger.Write("Send ReportNow");
                remoteExecution.Show(this);
                remoteExecution.SendReportNow(targetComputers, cred.Login, cred.Password);
                break;

            case "SendRebootNow":
                Logger.Write("Send RebootNow");
                FrmRebootCommand rebootCommand = new FrmRebootCommand(targetComputers, cred.Login, cred.Password);
                rebootCommand.Show();
                break;

            default:
                Logger.Write("**** Unable to detect the command");
                break;
            }
        }
        private void ctxMnuComputer_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            Logger.EnteringMethod(e.ClickedItem.Name);
            List <ADComputer>  targetComputers = new List <ADComputer>();
            FrmRemoteExecution remoteExecution = new FrmRemoteExecution();

            foreach (DataGridViewRow row in dGVComputer.SelectedRows)
            {
                if (row.Visible)
                {
                    targetComputers.Add((ADComputer)row.Cells["ComputerName"].Value);
                }
            }
            ctxMnuComputer.Hide();
            Credentials cred = Credentials.GetInstance();

            if (targetComputers.Count != 0)
            {
                if (cred.InitializeCredential() == false)
                {
                    return;
                }
            }
            lblCredentialNotice.Text = cred.CredentialNotice;
            Logger.Write(lblCredentialNotice);

            switch (e.ClickedItem.Name)
            {
            case "DetectNow":
                remoteExecution.Show(this);
                remoteExecution.SendDetectNow(targetComputers, cred.Login, cred.Password);
                break;

            case "ReportNow":
                remoteExecution.Show(this);
                remoteExecution.SendReportNow(targetComputers, cred.Login, cred.Password);
                break;

            case "RebootNow":
                FrmRebootCommand rebootCommand = new FrmRebootCommand(targetComputers, cred.Login, cred.Password);
                rebootCommand.Show();
                break;

            case "ShowPendingUpdates":
                System.Diagnostics.ProcessStartInfo startInfo      = new System.Diagnostics.ProcessStartInfo();
                System.Security.SecureString        securePassword = new System.Security.SecureString();

                startInfo.FileName = Environment.CurrentDirectory + @"\ShowPendingUpdates.exe";
                if (!System.IO.File.Exists(startInfo.FileName))
                {
                    Logger.Write("Unable to find : " + startInfo.FileName);
                    MessageBox.Show(resMan.GetString("UnableToFindShowPendingUpdates"));
                }
                else
                {
                    startInfo.Arguments = targetComputers[0].Name;
                    if (!string.IsNullOrEmpty(cred.Login) && !string.IsNullOrEmpty(cred.Password))
                    {
                        foreach (Char letter in cred.Password)
                        {
                            securePassword.AppendChar(letter);
                        }
                        startInfo.UserName = cred.Login;
                        startInfo.Password = securePassword;
                        startInfo.Domain   = ADHelper.GetDomainName();
                    }
                    startInfo.UseShellExecute  = false;
                    startInfo.WorkingDirectory = Environment.CurrentDirectory;
                    try
                    {
                        System.Diagnostics.Process.Start(startInfo);
                    }
                    catch (Exception ex)
                    {
                        Logger.Write("**** " + ex.Message);
                        MessageBox.Show(ex.Message);
                    }
                }
                break;

            case "InstallPendingUpdates":
                FrmInstallPendingUpdatesNow installPendingUpdates = new FrmInstallPendingUpdatesNow();
                installPendingUpdates.Username  = cred.Login;
                installPendingUpdates.Password  = cred.Password;
                installPendingUpdates.Computers = targetComputers;
                installPendingUpdates.ShowDialog();
                break;

            case "ShowCurrentLogonUser":
                this.Cursor = Cursors.WaitCursor;
                ADComputer remoteComputer = new ADComputer(dGVComputer.SelectedRows[0].Cells["ComputerName"].Value.ToString());
                string     logonUser      = remoteComputer.GetCurrentLogonUser(cred.Login, cred.Password);
                if (!string.IsNullOrEmpty(logonUser))
                {
                    MessageBox.Show(resMan.GetString("CurrentLogonUserIs") + " : " + logonUser);
                }
                else
                {
                    MessageBox.Show(resMan.GetString("UnableToGetLogonUser"));
                }
                this.Cursor = Cursors.Default;
                break;

            case "ShowWindowsUpdateLog":
                this.Cursor = Cursors.WaitCursor;
                ADComputer computer = new ADComputer(dGVComputer.SelectedRows[0].Cells["ComputerName"].Value.ToString());
                if (!computer.Ping(100))
                {
                    MessageBox.Show(resMan.GetString("ComputerUnreachable"));
                }
                else
                {
                    computer.OpenWindowsUpdateLog(cred.Login, cred.Password);
                }
                this.Cursor = Cursors.Default;
                break;

            case "CleanSoftwareDistributionFolder":
                this.Cursor = Cursors.WaitCursor;
                FrmCleanSoftwareDistributionFolder frmCleanSoftwareDistributionFolder = new FrmCleanSoftwareDistributionFolder(targetComputers, cred.Login, cred.Password);
                frmCleanSoftwareDistributionFolder.ShowDialog();
                this.Cursor = Cursors.Default;
                break;

            default:
                break;
            }
        }