I use a few silly tricks to help with this kind of foobar.
1: Make a global/generic function - that you can always call with a text string - that gets written to a log file - (make sure you code it so you can turn it on and off at will with conditional defines - so that in a release - you can easily strip the code - and not slow your end project down
2: Use a fileexist call - for each and every file - if the file doesn't exist - send the filename to the log file function mentioned above - before letting your program bomb out.
3: Write some code get the working directory - and or use relative paths - that take into account the way Visual Studio puts the RELASE and DEBUG down a bit... C:\PROJECTNAME\Bin\Debug\Your.Exe or C:\PROJECTNAME\Bin\Release\Your.Exe
4: Use the registry for your absolute file paths and/or put a little text config file - with the root path of your project - into either: C:\PROJECTNAME\Bin\Debug\ or C:\PROJECTNAME\Bin\Release\
when your program opens - you SHOULD be able to open the file without a path or anything (unless you have a shortcut that specifies a specific "Starting Directory) - in short - you should be able to open and read in the PROJECT PATH from this little config file always. Also eliminates registry woes and hardcoding stuff to much
Just a few thoughts.