У меня есть фрагмент кода, который вызывает метод DeleteFile в классе Microsoft.VisualBasic.FileIO.FileSystem (в сборке Microsoft.VisualBasic), чтобы отправить файл в корзину вместо того, чтобы окончательно удалить его. Этот код находится в управляемой службе Windows и работает на компьютере с Win Server 2k8 (32-разрядная версия).
Соответствующая строка:
FileSystem.DeleteFile(file.FullName, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin, UICancelOption.DoNothing);
Конечно, у меня есть "использование Microsoft.VisualBasic.FileIO;" в начале класса, и я убедился, что вызываемый метод действительно находится в классе FileSystem в этом пространстве имен. В приведенной выше строке я ссылаюсь на локальную переменную «file» - это FileInfo для локального файла (скажем, C: \ path \ to \ file.txt), в котором я уверен, что он существует. Приложение имеет полный контроль над файлом и каталогом, в котором он находится.
Кажется, что это работает просто отлично, поскольку файл исчезает из каталога, в котором он находился. Однако файл не отображается в Корзине. Я попытался проверить папки C: \ $ Recycle.Bin вручную, так как подозревал, что служба Windows, запущенная в сеансе 0, попадет в другую корзину, но все корзины кажутся пустыми.
Кто-нибудь знает, что вызывает такое поведение?
Кстати, на машине определенно нет свободного места на рассматриваемом диске (или на любом другом диске), и файл очень маленький (пару килобайт, поэтому он не превышает Порог корзины).