Example #1
0
        private void ChangeServiceState(object parameters)
        {
            ServiceParameters serviceParams = (ServiceParameters)parameters;

            object[] args = new object[3];
            args[0] = resMan.GetString("FailedToSendCommand");
            args[1] = serviceParams.RowIndex;
            args[2] = "ServiceStatus";

            if (!_closing && !_aborting && !_wrongCrendentialsWatcher.IsAbortRequested)
            {
                lock (_ChangeServiceStateLocker)
                {
                    try
                    {
                        if (!_closing && !_aborting && !_wrongCrendentialsWatcher.IsAbortRequested)
                        {
                            ADComputer computer = new ADComputer(dtGrdVResult.Rows[serviceParams.RowIndex].Cells["ComputerName"].Value.ToString());
                            bool       result   = false;
                            if (serviceParams.Command == "RestartService")
                            {
                                computer.ManageService(serviceParams.ServiceName, "StopService", serviceParams.Login, serviceParams.Password);
                                result  = computer.ManageService(serviceParams.ServiceName, "StartService", serviceParams.Login, serviceParams.Password);
                                args[0] = result ? resMan.GetString("Running") : resMan.GetString("Failed");
                            }
                            else
                            {
                                result  = computer.ManageService(serviceParams.ServiceName, serviceParams.Command, serviceParams.Login, serviceParams.Password);
                                args[0] = result ? ((serviceParams.Command == "StartService") ? resMan.GetString("Running") : resMan.GetString("Stopped")) : resMan.GetString("Failed");
                            }
                        }
                        else
                        {
                            args[0] = resMan.GetString("Aborted");
                        }
                    }
                    catch (UnauthorizedAccessException)
                    {
                        _wrongCrendentialsWatcher.IsWrongCredentials = true;

                        if (!_wrongCrendentialsWatcher.ContinueWithFailedCredentials)
                        {
                            if (MessageBox.Show(resMan.GetString("CredentialFailed"), resMan.GetString("FailedToConnect"), MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                            {
                                Logger.Write("interrupt on failed credentials.");
                                _wrongCrendentialsWatcher.IsAbortRequested = true;
                                args[0] = resMan.GetString("Aborted");
                            }
                            else
                            {
                                Logger.Write("Continue with bad credentials.");
                                _wrongCrendentialsWatcher.ContinueWithFailedCredentials = true;
                                args[0] = resMan.GetString("FailedToConnect");
                            }
                        }
                        else
                        {
                            args[0] = resMan.GetString("FailedToConnect");
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.Write(ex.Message);
                        args[0] = resMan.GetString("FailedToSendCommand");
                    }
                }
            }
            else
            {
                args[0] = resMan.GetString("Aborted");
            }

            UpdateRow(args);
        }