mirror of
https://github.com/Kopano-dev/kopano-ol-extension.git
synced 2023-10-10 13:37:40 +02:00
Restarter command line now adds profile key, if possible
This commit is contained in:
parent
dfd393d3f5
commit
6b7ec839b0
@ -92,5 +92,6 @@ namespace Acacia.Stubs
|
|||||||
void InUI(Action action, bool synchronous = true);
|
void InUI(Action action, bool synchronous = true);
|
||||||
|
|
||||||
bool IsOffline { get; }
|
bool IsOffline { get; }
|
||||||
|
string ProfileName { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -84,6 +84,22 @@ namespace Acacia.Stubs.OutlookWrappers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string ProfileName
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
NSOutlook.NameSpace session = _app.Session;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return session.CurrentProfileName;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
ComRelease.Release(session);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void InUI(Action action, bool synchronous = true)
|
public void InUI(Action action, bool synchronous = true)
|
||||||
{
|
{
|
||||||
if (synchronous)
|
if (synchronous)
|
||||||
@ -148,9 +164,19 @@ namespace Acacia.Stubs.OutlookWrappers
|
|||||||
// Create the path to the restarter
|
// Create the path to the restarter
|
||||||
path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(path), "OutlookRestarter.exe");
|
path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(path), "OutlookRestarter.exe");
|
||||||
|
|
||||||
|
// Use the current command line, with a profile command if not specified
|
||||||
|
string commandLine = Environment.CommandLine;
|
||||||
|
// This selects both /profile and /profiles. In that case we don't specify the profile, otherwise
|
||||||
|
// we specify the current profile
|
||||||
|
// It seems to be impossible to escape a profile name with a quote, so in that case ignore it
|
||||||
|
if (!commandLine.ToLower().Contains("/profile") && !ProfileName.Contains("\""))
|
||||||
|
{
|
||||||
|
commandLine += " /profile " + Util.QuoteCommandLine(ProfileName);
|
||||||
|
}
|
||||||
|
|
||||||
// Run that
|
// Run that
|
||||||
Process process = new Process();
|
Process process = new Process();
|
||||||
process.StartInfo = new ProcessStartInfo(path, Process.GetCurrentProcess().Id + " " + Environment.CommandLine);
|
process.StartInfo = new ProcessStartInfo(path, Process.GetCurrentProcess().Id + " " + commandLine);
|
||||||
process.Start();
|
process.Start();
|
||||||
|
|
||||||
// And close us and any other windows
|
// And close us and any other windows
|
||||||
|
@ -87,6 +87,16 @@ namespace Acacia.Utils
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string CombineKeys(string prefix, string suffix)
|
||||||
|
{
|
||||||
|
// Cannot use Path.Combine, as that throws on characters that are not allowed in paths, but may be
|
||||||
|
// allowed in the registry.
|
||||||
|
string key = prefix.StripSuffix("\\");
|
||||||
|
key += "\\";
|
||||||
|
key += suffix.StripPrefix("\\");
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
public static RegistryKey OpenKeyImpl(string baseKeyPath, string suffix, bool localMachine, RegistryKeyPermissionCheck permissions)
|
public static RegistryKey OpenKeyImpl(string baseKeyPath, string suffix, bool localMachine, RegistryKeyPermissionCheck permissions)
|
||||||
{
|
{
|
||||||
// Add the suffix
|
// Add the suffix
|
||||||
@ -94,7 +104,7 @@ namespace Acacia.Utils
|
|||||||
if (string.IsNullOrEmpty(suffix))
|
if (string.IsNullOrEmpty(suffix))
|
||||||
keyPath = baseKeyPath;
|
keyPath = baseKeyPath;
|
||||||
else
|
else
|
||||||
keyPath = System.IO.Path.Combine(baseKeyPath, suffix);
|
keyPath = CombineKeys(baseKeyPath, suffix);
|
||||||
|
|
||||||
// Open the key.
|
// Open the key.
|
||||||
using (RegistryKey hive = RegistryKey.OpenBaseKey(localMachine ? RegistryHive.LocalMachine : RegistryHive.CurrentUser, RegistryView.Registry64))
|
using (RegistryKey hive = RegistryKey.OpenBaseKey(localMachine ? RegistryHive.LocalMachine : RegistryHive.CurrentUser, RegistryView.Registry64))
|
||||||
|
@ -162,5 +162,16 @@ namespace Acacia.Utils
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Command line
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Quotes a single command line argument
|
||||||
|
/// </summary>
|
||||||
|
public static string QuoteCommandLine(string arg)
|
||||||
|
{
|
||||||
|
return "\"" + Regex.Replace(arg, @"(\\*)" + "\"", @"$1$1\" + "\"") + "\"";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user