private void Window_Loaded(object sender, RoutedEventArgs e) { try { SystemDriveLetters = DriveLetter.GetReservedFromRegistry(AlwaysAllowRemoval).ToList(); } catch (Exception ex) { MessageBox.Show("Es ist ein Fehler beim Laden der Laufwerksbuchstaben aufgetreten\n\n" + ex.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); Close(); } DriveLetterList.ItemsSource = SystemDriveLetters; }
/// <summary> /// Löscht den übergebenen RegistryKey aus der Registry /// </summary> /// <param name="Letter">Zu löschender Laufwerksbuchstabe</param> /// <param name="force">Wenn true, wird er entfernt, auch wenn er gerade in Benutzung ist</param> /// <exception cref="InvalidOperationException">Wenn der Laufwerksbuchstabe gearde von einem Gerät verwendet wird</exception> public static void DeleteFromRegistry(DriveLetter Letter, bool force = false) { if (force == false) { if (DriveLetterIsCurrentlyMounted(Letter.Letter)) { throw new InvalidOperationException($"Der Laufwerksbuchstabe kann nicht aus der Registry entfernt werden, weil er gerade von einem Gerät verwendet wird"); } } RegistryKey MountedDevicesKey = GetMountedDevicesRegistryKey(true); MountedDevicesKey.DeleteValue(Letter.ExpectedRegistryValueName); }
/// <summary> /// Gibt <see cref="DriveInfo"/> für den übergebnen Laufwerksbuchstaben zurück /// </summary> /// <param name="Letter">DriveLetter Information</param> /// <returns></returns> /// <exception cref="IOException">Gerät mit dem übergebnenen Laufwerksbuchstaben ist nicht gemounted</exception> public static DriveInfo GetDriveInfoForMountedDevice(DriveLetter Letter) { return(GetDriveInfoForMountedDevice(Letter.Letter)); }
/// <summary> /// Prüft ob der Laufwerksbuchstabe ein Systemkritischer ist /// </summary> /// <param name="Letter">Zu prüfender Buchstabe</param> /// <returns></returns> public static bool IsProtectedLetter(DriveLetter Letter) { return(IsProtectedLetter(Letter.Letter)); }