Hikaru Posted April 1, 2009 Posted April 1, 2009 Let's say I have a piece of code like this one:private void RecursePath(DirectoryInfo Root){ if (Root.Exists) { //System.Threading.Thread.Sleep(15000); FileInfo[] files = Root.GetFiles(); LastFile = ""; foreach (FileInfo fi in files) { try { LastFile = fi.FullName; FileStream f = File.Open(LastFile, FileMode.Open); f.Close(); //FileIO TestFile = new FileIO(LastFile, FileIO.FileIoMode.OpenExisting); } catch (Exception e) { PrintException(LastFile, e); } }Yeah, it's a bit ugly sorry. The point is that I'm having some troubles trying to understand why File.Open() throws PathTooLongException with paths shorter than 248/260 bytes (I'm talking about 160 bytes or so). After attaching a native debugger to the running app I can see that CreateFileW is returning a valid handle and GetLastErr = ERROR_SUCCESS. WTF!?Also, if use CreateFileW directly using NativeMethods (that's what this commented FileIO class does) the behaviour is exactly the same.So the question is... anyone experienced similar problems? Or has any hint about where's the problem? I know this is not strictly related to reversing but I think is strange enough to share this X-File ;DThanks!
Hikaru Posted April 1, 2009 Author Posted April 1, 2009 Reply-to-myself. The problem was at LastFile = fi.FullName; So only by accessing fi.FullName causes a PathTooLongException if FullName.Length > 260 and my code was showing LastFile.... bakayaro!! The funny thing is that in the MSDN doc says FullName can only throw SecurityException Well, sorry about the noise
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now