示例#1
0
        public RESTStatus GetAddRemovePrograms(SQLLib sql, object dummy, NetworkConnectionInfo ni, string id)
        {
            if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false)
            {
                ni.Error   = "Access denied";
                ni.ErrorID = ErrorFlags.AccessDenied;
                return(RESTStatus.Denied);
            }

            AddRemoveRep       = new ListAddRemoveAppsReport();
            AddRemoveRep.Items = new List <AddRemoveAppReport>();

            lock (ni.sqllock)
            {
                SqlDataReader dr;
                if (string.IsNullOrWhiteSpace(id) == true)
                {
                    dr = sql.ExecSQLReader("select * from AddRemovePrograms inner join ComputerAccounts on ComputerAccounts.MachineID=AddRemovePrograms.MachineID left outer join UsersList on UsersList.SID=HKCUUser AND UsersList.MachineID=AddRemovePrograms.MachineID order by Name,VersionMajor,VersionMinor");
                }
                else
                {
                    if (Computers.MachineExists(sql, id) == false)
                    {
                        ni.Error   = "Invalid data";
                        ni.ErrorID = ErrorFlags.InvalidData;
                        return(RESTStatus.NotFound);
                    }

                    dr = sql.ExecSQLReader("select * from AddRemovePrograms inner join ComputerAccounts on ComputerAccounts.MachineID=AddRemovePrograms.MachineID left outer join UsersList on UsersList.SID=HKCUUser AND UsersList.MachineID=AddRemovePrograms.MachineID WHERE ComputerAccounts.MachineID=@m order by Name,VersionMajor,VersionMinor",
                                           new SQLParam("@m", id));
                }

                while (dr.Read())
                {
                    AddRemoveAppReport ar = new AddRemoveAppReport();
                    ar.Computername      = Convert.ToString(dr["Computername"]);
                    ar.DisplayLanguage   = Convert.ToString(dr["DisplayLanguage"]);
                    ar.DisplayVersion    = Convert.ToString(dr["DisplayVersion"]);
                    ar.IsMSI             = Convert.ToBoolean(dr["IsMSI"]);
                    ar.IsWOWBranch       = Convert.ToBoolean(dr["IsWOWBranch"]);
                    ar.IsSystemComponent = Convert.ToBoolean(dr["IsSystemComponent"]);
                    ar.Language          = Convert.ToString(dr["Language"]);
                    ar.MachineID         = Convert.ToString(dr["MachineID"]);
                    ar.Name            = Convert.ToString(dr["Name"]);
                    ar.ProductID       = Convert.ToString(dr["ProductID"]);
                    ar.UninstallString = Convert.ToString(dr["UninstallString"]);
                    ar.VersionMajor    = Convert.ToInt32(dr["VersionMajor"]);
                    ar.VersionMinor    = Convert.ToInt32(dr["VersionMinor"]);
                    ar.DT       = SQLLib.GetDTUTC(dr["DT"]);
                    ar.HKCUUser = Convert.ToString(dr["HKCUUser"]);
                    ar.Username = Convert.ToString(dr["Username"]);
                    if (string.IsNullOrWhiteSpace(ar.HKCUUser) == true)
                    {
                        ar.HKCUUser = "";
                    }

                    AddRemoveRep.Items.Add(ar);
                }
                dr.Close();
            }

            return(RESTStatus.Success);
        }
示例#2
0
 public frmPropertiesWindow(AddRemoveAppReport cd)
 {
     InitializeComponent();
     data = cd;
 }
示例#3
0
        private void uninstallToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (lstApps.SelectedItems.Count == 0)
            {
                return;
            }
            List <string> MIDs = new List <string>();

            if (((AddRemoveAppReport)lstApps.SelectedItems[0].Tag).IsMSI == true)
            {
                foreach (ListViewItem lst in lstApps.SelectedItems)
                {
                    AddRemoveAppReport lt = (AddRemoveAppReport)lst.Tag;
                    if (MIDs.Contains(lt.MachineID.ToLower()) == false)
                    {
                        MIDs.Add(lt.MachineID.ToLower());
                    }
                    if (lt.IsMSI == false)
                    {
                        MessageBox.Show(this, "You cannot mix MSI installations with non-MSI installations to uninstall in the selection.", Program.Title, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }
                if (MessageBox.Show(this, "Do you really want to uninstall the selected " + lstApps.SelectedItems.Count.ToString() + " application" + (lstApps.SelectedItems.Count == 1 ? "" : "s") + " from " + MIDs.Count.ToString() + " computer" + (MIDs.Count == 1 ? "" : "s") + "?", Program.Title, MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
                {
                    return;
                }

                foreach (ListViewItem lst in lstApps.SelectedItems)
                {
                    AddRemoveAppReport lt = (AddRemoveAppReport)lst.Tag;

                    if (string.IsNullOrWhiteSpace(lt.ProductID) == true)
                    {
                        continue;
                    }

                    SimpleTaskRunProgramm run = new SimpleTaskRunProgramm();
                    if (lt.IsWOWBranch == false)
                    {
                        run.Executable = "%SYSTEMROOT%\\System32\\MSIExec.exe";
                    }
                    else
                    {
                        run.Executable = "%SYSTEMROOT%\\SysWOW64\\MSIExec.exe";
                    }

                    run.Parameters = "/x " + lt.ProductID + " /passive /quiet /norestart";
                    run.User       = lt.Username;

                    Program.net.SetSimpleTask("Uninstall: " + lt.Name + (string.IsNullOrWhiteSpace(lt.Username) == true ? "" : " (as " + lt.Username + ")"), lt.MachineID, null, 1, run);
                }
            }
            else
            {
                if (lstApps.SelectedItems.Count > 1)
                {
                    MessageBox.Show(this, "Only one non MSI can be selected to uninstall.", Program.Title, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                AddRemoveAppReport    lt  = (AddRemoveAppReport)lstApps.SelectedItems[0].Tag;
                SimpleTaskRunProgramm run = new SimpleTaskRunProgramm();
                if (lt.UninstallString.StartsWith("\"") == true)
                {
                    if (lt.UninstallString.IndexOf('"', 1) == -1)
                    {
                        run.Executable = lt.UninstallString.Substring(1);
                    }
                    else
                    {
                        run.Executable = lt.UninstallString.Substring(1, lt.UninstallString.IndexOf('"', 1) - 1);
                        run.Parameters = lt.UninstallString.Substring(lt.UninstallString.IndexOf('"', 1) + 1);
                    }
                    run.User = lt.Username;
                }
                else
                {
                    if (lt.UninstallString.IndexOf(' ', 0) == -1)
                    {
                        run.Executable = lt.UninstallString;
                    }
                    else
                    {
                        run.Executable = lt.UninstallString.Substring(0, lt.UninstallString.IndexOf(' '));
                        run.Parameters = lt.UninstallString.Substring(lt.UninstallString.IndexOf(' ') + 1);
                    }

                    run.User = lt.Username;
                }

                SimpleTask st = new SimpleTask();
                st.Data      = JsonConvert.SerializeObject(run);
                st.MachineID = lt.MachineID;
                st.Type      = 1;
                st.ID        = -1;
                st.Name      = "Uninstall: " + lt.Name + (string.IsNullOrWhiteSpace(lt.Username) == true ? "" : " (as " + lt.Username + ")");
                frmSimpleTasks frm = new frmSimpleTasks(st);
                frm.ShowDialog(this);
            }
        }