public static bool Restore(string Path) { try { using (ShellItem SourceItem = new ShellItem(Path)) { string DirectoryName = System.IO.Path.GetDirectoryName(SourceItem.Name); if (!Directory.Exists(DirectoryName)) { _ = Directory.CreateDirectory(DirectoryName); } using (ShellFolder DestItem = new ShellFolder(DirectoryName)) { ShellFileOperations.Move(SourceItem, DestItem, null, ShellFileOperations.OperationFlags.AddUndoRecord | ShellFileOperations.OperationFlags.NoConfirmMkDir | ShellFileOperations.OperationFlags.Silent | ShellFileOperations.OperationFlags.RenameOnCollision); } string ExtraInfoPath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Path), System.IO.Path.GetFileName(Path).Replace("$R", "$I")); if (File.Exists(ExtraInfoPath)) { File.Delete(ExtraInfoPath); } } return(true); } catch { return(false); } }
public void MoveItemTest() { // Delete item to Recycle Bin using var tmp = new TempFile(); Assert.That(() => ShellFileOperations.Delete(tmp.FullName), Throws.Nothing); // Find deleted item using var bin = new ShellFolder(KNOWNFOLDERID.FOLDERID_RecycleBinFolder); var item = bin.FirstOrDefault(si => si.Name == tmp.FullName); Assert.NotNull(item); // Restore item using var dest = new ShellFolder(Path.GetDirectoryName(tmp.FullName)); Assert.That(() => ShellFileOperations.Move(item, dest, null, ShellFileOperations.OperationFlags.NoConfirmation), Throws.Nothing); Assert.IsTrue(File.Exists(tmp.FullName)); }
public static bool Move(string SourcePath, string DestinationPath, string NewName = null) { try { using (ShellItem SourceItem = new ShellItem(SourcePath)) using (ShellFolder DestItem = new ShellFolder(DestinationPath)) { ShellFileOperations.Move(SourceItem, DestItem, NewName, ShellFileOperations.OperationFlags.AllowUndo | ShellFileOperations.OperationFlags.NoConfirmMkDir | ShellFileOperations.OperationFlags.Silent); } return(true); } catch { return(false); } }