Существует несколько способов определить места установки / запуска в .NET
Environment.CurrentDirectory
получит текущий рабочий каталог.
Если вы установили приложение в определенном месте в Program Files, вы можете использовать:
Environment.SpecialFolder.ProgramFiles;
Я почти уверен, что есть ряд других способов узнать текущий бегущий путь.
Что касается Linux, я предполагаю, что он будет работать под Mono? Если это так, я не уверен, как именно они обрабатывают специальные папки.
Наслаждайтесь!