Если через проводник удаляется, то скорее всего сюрпризы .net.На время, пока ищите проблему можно использовать трешечный метод:
X++:
client server static int deleteFile_3(str fileName)
{
DLL _winApiDLL = new DLL('KERNEL32');
DLLFunction _deleteFile = new DLLFunction(_winApiDLL, 'DeleteFileA');
_deleteFile.returns(ExtTypes::DWord);
_deleteFile.arg(ExtTypes::String);
if (_deleteFile.call(fileName) == 0)
return WinAPI::getLastError();
return 0;
}