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); }
public frmPropertiesWindow(AddRemoveAppReport cd) { InitializeComponent(); data = cd; }
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); } }