diff --git a/DnsServerSystemTrayApp/MainApplicationContext.cs b/DnsServerSystemTrayApp/MainApplicationContext.cs index dfbc2494..726e692e 100644 --- a/DnsServerSystemTrayApp/MainApplicationContext.cs +++ b/DnsServerSystemTrayApp/MainApplicationContext.cs @@ -27,7 +27,6 @@ using System.Management; using System.Net; using System.Net.NetworkInformation; using System.Net.Sockets; -using System.Reflection; using System.ServiceProcess; using System.Text; using System.Windows.Forms; @@ -506,7 +505,7 @@ namespace DnsServerSystemTrayApp { string autoStartPath = key.GetValue("Technitium DNS System Tray") as string; - AutoStartMenuItem.Checked = (autoStartPath != null) && autoStartPath.Equals("\"" + Assembly.GetEntryAssembly().Location + "\""); + AutoStartMenuItem.Checked = (autoStartPath != null) && autoStartPath.Equals("\"" + Program.APP_PATH + "\""); } } } @@ -527,7 +526,7 @@ namespace DnsServerSystemTrayApp { //try finding port number from dns config file - string dnsConfigFile = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "config", "dns.config"); + string dnsConfigFile = Path.Combine(Path.GetDirectoryName(Program.APP_PATH), "config", "dns.config"); using (FileStream fS = new FileStream(dnsConfigFile, FileMode.Open, FileAccess.Read)) { @@ -766,7 +765,7 @@ namespace DnsServerSystemTrayApp using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true)) { if (key != null) - key.SetValue("Technitium DNS System Tray", "\"" + Assembly.GetEntryAssembly().Location + "\"", RegistryValueKind.String); + key.SetValue("Technitium DNS System Tray", "\"" + Program.APP_PATH + "\"", RegistryValueKind.String); } } catch (Exception ex) diff --git a/DnsServerSystemTrayApp/Program.cs b/DnsServerSystemTrayApp/Program.cs index 55766ea8..b3b1d124 100644 --- a/DnsServerSystemTrayApp/Program.cs +++ b/DnsServerSystemTrayApp/Program.cs @@ -33,20 +33,28 @@ namespace DnsServerSystemTrayApp const string MUTEX_NAME = "TechnitiumDnsServerSystemTrayApp"; - static string _appPath = Assembly.GetEntryAssembly().Location; - static readonly bool _isAdmin = (new WindowsPrincipal(WindowsIdentity.GetCurrent())).IsInRole(WindowsBuiltInRole.Administrator); + public static readonly string APP_PATH = Assembly.GetEntryAssembly().Location; + + static readonly bool _isAdmin = new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator); static Mutex _app; #endregion + #region constructor + + static Program() + { + if (APP_PATH.EndsWith(".dll", StringComparison.OrdinalIgnoreCase)) + APP_PATH = APP_PATH.Substring(0, APP_PATH.Length - 4) + ".exe"; + } + + #endregion + #region public [STAThread] public static void Main(string[] args) { - if (_appPath.EndsWith(".dll", StringComparison.OrdinalIgnoreCase)) - _appPath = _appPath.Substring(0, _appPath.Length - 4) + ".exe"; - Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); @@ -62,7 +70,7 @@ namespace DnsServerSystemTrayApp #endregion - string configFile = Path.Combine(Path.GetDirectoryName(_appPath), "SystemTrayApp.config"); + string configFile = Path.Combine(Path.GetDirectoryName(APP_PATH), "SystemTrayApp.config"); Application.Run(new MainApplicationContext(configFile, args)); } @@ -72,7 +80,7 @@ namespace DnsServerSystemTrayApp if (_isAdmin) throw new Exception("App is already running as admin."); - ProcessStartInfo processInfo = new ProcessStartInfo(_appPath, args); + ProcessStartInfo processInfo = new ProcessStartInfo(APP_PATH, args); processInfo.UseShellExecute = true; processInfo.Verb = "runas";