diff --git a/ATxTray/AutoTxTray.cs b/ATxTray/AutoTxTray.cs
index 091509b72982bdcdd1fc14b1812565353475513a..5e4ee4467e4455379efd41cfb9691cad6b11b169 100644
--- a/ATxTray/AutoTxTray.cs
+++ b/ATxTray/AutoTxTray.cs
@@ -26,9 +26,7 @@ namespace ATxTray
         private static readonly Timer AppTimer = new Timer(1000);
         private static bool _terminate = false;
 
-        private static readonly string BaseDir = AppDomain.CurrentDomain.BaseDirectory;
-        private static readonly string ConfigFile = Path.Combine(BaseDir, "configuration.xml");
-        private static readonly string StatusFile = Path.Combine(BaseDir, "status.xml");
+        private static string _statusFile;
         private static string _submitPath;
         private static DateTime _statusAge;
         private static ServiceConfig _config;
@@ -62,10 +60,10 @@ namespace ATxTray
         private static TaskDialog _confirmDialog;
         private static DirectoryInfo _selectedDir;
 
-        public AutoTxTray() {
+        public AutoTxTray(string baseDir) {
             
             #region logging configuration
-            
+
             var logConfig = new LoggingConfiguration();
             var fileTarget = new FileTarget {
                 FileName = Path.GetFileNameWithoutExtension(Application.ExecutablePath) + ".log",
@@ -80,13 +78,16 @@ namespace ATxTray
             #endregion
 
 
+            var configFile = Path.Combine(baseDir, "configuration.xml");
+            _statusFile = Path.Combine(baseDir, "status.xml");
+
             Log.Info("-----------------------");
             Log.Info("{0} initializing...", AppTitle);
             Log.Info("build: [{0}]", Properties.Resources.BuildDate.Trim());
             Log.Info("commit: [{0}]", Properties.Resources.BuildCommit.Trim());
             Log.Info("-----------------------");
-            Log.Debug(" - config file: [{0}]", ConfigFile);
-            Log.Debug(" - status file: [{0}]", StatusFile);
+            Log.Debug(" - config file: [{0}]", configFile);
+            Log.Debug(" - status file: [{0}]", _statusFile);
 
             _notifyIcon.Icon = _tiStopped;
             _notifyIcon.Visible = true;
@@ -97,7 +98,7 @@ namespace ATxTray
 
             Log.Trace("Trying to read service config and status files...");
             try {
-                _config = ServiceConfig.Deserialize(ConfigFile);
+                _config = ServiceConfig.Deserialize(configFile);
                 ReadStatus();
                 Log.Trace("Completed reading service config and status files.");
                 SetupContextMenu();
@@ -342,13 +343,13 @@ namespace ATxTray
         /// Read (or re-read) the service status file if it has changed since last time.
         /// </summary>
         private static void ReadStatus() {
-            var age = new FileInfo(StatusFile).LastWriteTime;
+            var age = new FileInfo(_statusFile).LastWriteTime;
             if (age == _statusAge)
                 return;
 
             Log.Trace("Status file was updated, trying to re-read...");
             _statusAge = age;
-            _status = ServiceStatus.Deserialize(StatusFile, _config);
+            _status = ServiceStatus.Deserialize(_statusFile, _config);
         }
 
         /// <summary>
diff --git a/ATxTray/Program.cs b/ATxTray/Program.cs
index 33d438058e5cfa76853e64131d800b3632d1d806..9870f794ae97c78db9787e21a8cc9e643c045768 100644
--- a/ATxTray/Program.cs
+++ b/ATxTray/Program.cs
@@ -9,10 +9,13 @@ namespace ATxTray
         /// The main entry point for the application.
         /// </summary>
         [STAThread]
-        private static void Main() {
+        private static void Main(string[] args) {
             Application.EnableVisualStyles();
             Application.SetCompatibleTextRenderingDefault(false);
-            Application.Run(new AutoTxTray());
+            var baseDir = AppDomain.CurrentDomain.BaseDirectory;
+            if (args.Length > 0)
+                baseDir = args[0];
+            Application.Run(new AutoTxTray(baseDir));
         }
     }
 }