У меня есть фрагмент кода, который вызывает метод 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 в этом пространстве имен. В приведенной выше строке я ссылаюсь на локальную переменную «файл» — это FileInfo для локального файла (скажем, C:\path\to\file.txt), в существовании которого я уверен. Приложение имеет полный контроль как над файлом, так и над каталогом, в котором он находится.
Похоже, это работает нормально, поскольку файл исчезает из каталога, в котором он находился. Однако файл не отображается в корзине. Я попытался проверить папки C:\$Recycle.Bin вручную, так как подозревал, что служба Windows, работающая в сеансе 0, приведет к тому, что она окажется в другой корзине, но все корзины выглядят пустыми.
Кто-нибудь знает, что вызывает такое поведение?
Кстати, свободное место на рассматриваемом диске (или любом другом диске, если уж на то пошло) точно не закончилось, а файл очень маленький (пару килобайт, так что он не превышает порог корзины). ).