Posted April 1, 200916 yr 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!
April 1, 200916 yr Author 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
Create an account or sign in to comment