internal void Delete(ListBox lstBoxSendTo, Message message)
 {
     if (lstBoxSendTo.SelectedItems.Count == 0) {
         message.Error(_window.FindResource("SelectedOnItem") as string);
         return;
     }
     FileItem[] sendToListItems = new FileItem[lstBoxSendTo.SelectedItems.Count];
     lstBoxSendTo.SelectedItems.CopyTo(sendToListItems, 0);
     string msg = sendToListItems.Length == 1
         ? _window.FindResource("SureToDelete") + " \"" + sendToListItems[0].Name + "\" " + _window.FindResource("FromSendToMenu")
         : _window.FindResource("SureToDeleteMultiple") + " " + sendToListItems.Length + " " + _window.FindResource("FromSendToMenuMultiple");
     InfoBox infoBox = new InfoBox(msg, _window.FindResource("Delete").ToString(),
         _window.FindResource("WarningMsgTitle").ToString(), InfoBox.DialogType.Question);
     if (infoBox.ShowDialog() != true) return;
     List<string> failedFiles = new List<string>();
     foreach (FileItem sendToFileItem in sendToListItems) {
         string filePath = sendToFileItem.FullName;
         try {
             if (Path.GetExtension(filePath).Equals(".lnk", StringComparison.InvariantCultureIgnoreCase) ||
                 Path.GetExtension(filePath).Equals(".pif", StringComparison.InvariantCultureIgnoreCase)) {
                 if (!System.IO.File.Exists(filePath)) {
                     failedFiles.Add(sendToFileItem.Name);
                     continue;
                 }
             }
             else {
                 failedFiles.Add(sendToFileItem.Name);
                 continue;
             }
             System.IO.File.Delete(filePath);
         }
         catch (IOException) {
             failedFiles.Add(sendToFileItem.Name);
         }
         catch (NullReferenceException) {
             failedFiles.Add(sendToFileItem.Name);
         }
     }
     if (!failedFiles.Any()) return;
     string failedMsg = failedFiles.Count > 1
         ? _window.FindResource("FailedToDelete") + " " + failedFiles.SentenceJoin() +
           " " + _window.FindResource("AreNotShortcutsMultiple")
         : _window.FindResource("FailedToDelete") + " " + failedFiles.SentenceJoin() +
           " " + _window.FindResource("AreNotShortcuts");
     message.Error(failedMsg);
 }
        internal static ObservableCollection<FileItem> All()
        {
            ObservableCollection<FileItem> rightClickListItems = new ObservableCollection<FileItem>();
            using (RegistryKey hkcrDirShell = Registry.ClassesRoot.OpenSubKey(@"Directory\Background\Shell")) {
                if (hkcrDirShell == null)
                   return null;
                foreach (string subKeyName in hkcrDirShell.GetSubKeyNames()) {
                    if (subKeyName.Equals("cmd", StringComparison.InvariantCultureIgnoreCase))
                        continue;

                    RegistryKey regKey = hkcrDirShell.OpenSubKey(subKeyName + @"\command");
                    if (regKey == null) continue;
                    string val = regKey.GetValue("") as string;
                    if (String.IsNullOrEmpty(val)) continue;

                    if (val.ToLower().Contains(Constants.InternetExplorer)) {
                        val = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles),
                            @"Internet Explorer\" + Constants.InternetExplorer);
                    } else if (val.Contains(" ")) {
                        string[] valSplit = val.Split(' ');
                        if (valSplit.Length == 2) {
                            val = valSplit[0];
                        }
                    }
                    if (!File.Exists(val))
                        continue;
                    System.Drawing.Icon icon = System.Drawing.Icon.ExtractAssociatedIcon(val);
                    ImageSource imgSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon(
                        icon.Handle, new Int32Rect(0, 0, icon.Width, icon.Height), BitmapSizeOptions.FromEmptyOptions());
                    FileItem fileItem = new FileItem(val, imgSource, subKeyName);
                    fileItem.Name = subKeyName;
                    rightClickListItems.Add(fileItem);
                }
            }
            return rightClickListItems;
        }
 public static void Toggle(FileItem fileItem, bool newState)
 {
     using (RegistryKey hkcrApplications = Registry.ClassesRoot.CreateSubKey("Applications"))
     {
         string fileName = System.IO.Path.GetFileName(fileItem.FullName);
         if (fileName == null) return;
         RegistryKey regKey = hkcrApplications.OpenSubKey(fileName, true);
         if (regKey == null) return;
         if (newState) {
             regKey.DeleteValue(Constants.NoOpenWith);
         }
         else {
             regKey.SetValue(Constants.NoOpenWith, "");
         }
     }
 }
 public static void Toggle(FileItem fileItem, bool newState)
 {
     RegistryKey hkcrRun = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");
     RegistryKey hkcrRunDisabled =
         Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run-");
     bool isSuccess = newState ? hkcrRunDisabled.Move(hkcrRun, fileItem.Name)
         : hkcrRun.Move(hkcrRunDisabled, fileItem.Name);
     if (!isSuccess) {
         RegistryKey hklmRun =
             Registry.LocalMachine.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");
         RegistryKey hklmRunDisabled =
             Registry.LocalMachine.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run-");
         if (newState) {
             hklmRunDisabled.Move(hklmRun, fileItem.Name);
         }
         else {
             hklmRun.Move(hklmRunDisabled, fileItem.Name);
         }
         hklmRun.Close();
         hklmRunDisabled.Close();
     }
     hkcrRun.Close();
     hkcrRunDisabled.Close();
 }
 internal static void Delete(FileItem fileItem, ObservableCollection<FileItem> rightClickFileItems)
 {
     using (RegistryKey hkcrFrndlyTxt = Registry.ClassesRoot.CreateSubKey(@"Directory\Background\Shell")) {
         if (hkcrFrndlyTxt == null && hkcrFrndlyTxt.OpenSubKey(fileItem.Tag.ToString()) != null) return;
         hkcrFrndlyTxt.DeleteSubKeyTree(fileItem.Tag.ToString());
         rightClickFileItems.Remove(fileItem);
     }
 }