BACKGROUND
I need to write a tool using .NET version 2.0 at highest (using something off the shelf is not an option for this client for political, c
It should be fairly easy to work around this limitation with a bit of platform invoke, assuming your software has the necessary permissions:
[DllImport("kernel32.dll", SetLastError = true)]
static extern SafeFileHandle CreateFile(string lpFileName, uint dwDesiredAccess,
uint dwShareMode, IntPtr lpSecurityAttributes, uint dwCreationDisposition,
uint dwFlagsAndAttributes, IntPtr hTemplateFile);
// Must close/dispose handle separately from FileStream since it's not owned by
// that object when passed to constructor.
using (SafeFileHandle h = CreateFile(longUncPath, GENERIC_WRITE, 0, IntPtr.Zero,
OPEN_EXISTING, 0, IntPtr.Zero))
{
using (var fs = new FileStream(h, FileAccess.Read))
{
// operations with FileStream object
}
}
You could try shortening the path by mapping a parent directory using subst.exe (or whatever APIs it uses internally):
http://www.makeuseof.com/tag/how-to-map-a-local-windows-folder-to-a-drive-letter/
Ideally you'd map away as much as possible of the path.
The BCL team did a 3 part series on exactly why these choices were made and what the work arounds are. If you haven't read that yet I suggest you do as it's a great source of information on the subject
I ran into one third-party solution that may help: AlphaFS.
I have had success deleting directory structures using below small script. pushd uses UNC format which gives you 32K instead of 260 limitation
set "folder=\\SERVER\SHARE\DIVISION\DEPARTMENT\NAME OF TEAM - COULD BE FAIRLY LONG\"
pushd "%folder%"
for /d %%i in ("*") do rmdir "%%i" /s /q
popd