During a migration from Windows XP to Windows 7, I recently faced an issue with a business-critical application. The application did start, but would not connect to a database. Both the application and database were located on a DFS share. The following error showed up:
Some troubleshooting/trial and error led to the following facts:
1) starting the program from \\servername\app\app.exe ran with no issues
2) starting the program from \\dfsshare\folder1\folder2\app\app.exe returned an error
I first suspected the problem to be in Offline Files. There are a legion of known issues with caching of network files. However the problem persisted after completely disabling Offline Files and formatting the CSC database.
Then a colleague came up with a magical term that would lead to the solution: Traverse Checking.
Since Windows 7 had the issues while XP had no issues with the application at all, the problem had to be in technique used by Windows 7.
The user that tried to access app.exe had no "Traverse"-rights on the upper folders Folder1 and Folder2. Windows 7 uses SMB v2 (in contrast to Windows XP, that uses SMB v1), and Bypassing Traverse folders is limited. The application I was having issues with was very strict and would not allow access to a database file in a location where the path is not completely traversable.
Topics on technet often refer to the following commands to disable SMB v2:
sc config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc config mrxsmb20 start= disabled
However, for me they did not work. I therefore decided to make all upper lying folders traversable
After giving the affected users “Traverse Folder”-rights on all folders in the path \\dfsshare\folder1\folder2\app\app.exe , the application started and could successfully connect to the database.
Some related articles I used while troubleshooting: