One my colleague got a new PC and had a problem opening file using simple code(just from MSDN example ):
FileInfo fi1 = new FileInfo(relativePath);
It showed that file doesn’t exist. We’ve tried also File.Exists(relativePath), changed the path to absolule- the same result-
file is visible in Windows Explorer, but doesn’t exist in code. Note that directory was shown in debugger as existing.
We’ve created(using Windows Explorer) a new Text file, named “test.txt” and tried to open it in code- the same “file not exist” problem.
We’ve checked different security settings- the same.
Finally I recognized, that Windows Explorer was set to “Hide extensions for known file types” and file visible as “test.txt” was actually created as
The lesson: developer (and any user who has understanding of file extensions) should never have “Hide extensions for known file types” in Windows Explorer.
By the way: If you want to use a relative path from Windows Service, reset current directory in the code
as suggested in post “Current Directory For Windows Service Is Not What You Expect“