diff --git a/DisplayMagician/GameLibraries/EpicLibrary.cs b/DisplayMagician/GameLibraries/EpicLibrary.cs index 10ce625..5cb7d18 100644 --- a/DisplayMagician/GameLibraries/EpicLibrary.cs +++ b/DisplayMagician/GameLibraries/EpicLibrary.cs @@ -11,6 +11,7 @@ using System.Xml.XPath; using System.Web; using System.Diagnostics; using Newtonsoft.Json; +using DisplayMagician.Processes; namespace DisplayMagician.GameLibraries { diff --git a/DisplayMagician/GameLibraries/GOGLibrary.cs b/DisplayMagician/GameLibraries/GOGLibrary.cs index 8bc8bd9..efe8755 100644 --- a/DisplayMagician/GameLibraries/GOGLibrary.cs +++ b/DisplayMagician/GameLibraries/GOGLibrary.cs @@ -11,6 +11,7 @@ using System.Xml.XPath; using System.Web; using System.Diagnostics; using Newtonsoft.Json; +using DisplayMagician.Processes; namespace DisplayMagician.GameLibraries { diff --git a/DisplayMagician/GameLibraries/OriginLibrary.cs b/DisplayMagician/GameLibraries/OriginLibrary.cs index d729cff..8f3ce87 100644 --- a/DisplayMagician/GameLibraries/OriginLibrary.cs +++ b/DisplayMagician/GameLibraries/OriginLibrary.cs @@ -11,6 +11,7 @@ using System.Xml.XPath; using System.Web; using System.Diagnostics; using System.Text; +using DisplayMagician.Processes; namespace DisplayMagician.GameLibraries { diff --git a/DisplayMagician/GameLibraries/SteamLibrary.cs b/DisplayMagician/GameLibraries/SteamLibrary.cs index 60c2f26..e09c183 100644 --- a/DisplayMagician/GameLibraries/SteamLibrary.cs +++ b/DisplayMagician/GameLibraries/SteamLibrary.cs @@ -8,6 +8,7 @@ using Microsoft.Win32; using System.IO; using System.Security; using System.Diagnostics; +using DisplayMagician.Processes; namespace DisplayMagician.GameLibraries { diff --git a/DisplayMagician/GameLibraries/UplayLibrary.cs b/DisplayMagician/GameLibraries/UplayLibrary.cs index 5be1a70..5ede7bd 100644 --- a/DisplayMagician/GameLibraries/UplayLibrary.cs +++ b/DisplayMagician/GameLibraries/UplayLibrary.cs @@ -10,6 +10,7 @@ using ProtoBuf; using YamlDotNet.Serialization; using YamlDotNet.Serialization.NamingConventions; using System.Globalization; +using DisplayMagician.Processes; namespace DisplayMagician.GameLibraries { @@ -915,7 +916,8 @@ namespace DisplayMagician.GameLibraries { address += "/0"; } - List gameProcesses = ProcessUtils.StartProcess(address, null, processPriority); + //List gameProcesses = ProcessUtils.StartProcess(address, null, processPriority); + List gameProcesses = ProcessUtils.StartProcess(address, "", ProcessPriority.Normal); return gameProcesses; } diff --git a/DisplayMagician/Processes/ProcessUtils.cs b/DisplayMagician/Processes/ProcessUtils.cs index 09ec32b..9616e40 100644 --- a/DisplayMagician/Processes/ProcessUtils.cs +++ b/DisplayMagician/Processes/ProcessUtils.cs @@ -59,6 +59,13 @@ namespace DisplayMagician.Processes List runningProcesses = new List(); Process process = null; bool usingChildProcess = false; + + if (TryExecute_AutoImpersonate(executable, arguments, out process)) + { + logger.Trace($"ProcessUtils/StartProcess: {executable} {arguments} has successfully been started (ID: {process.Id})"); + runningProcesses.Add(process); + } + return runningProcesses; } public static List GetChildProcesses(Process process) @@ -259,11 +266,11 @@ namespace DisplayMagician.Processes /// Process priority /// Maximum time to wait for completion /// true if process was executed and finished correctly - public static bool TryExecute_AutoImpersonate(string executable, string arguments, ProcessPriorityClass priorityClass = ProcessPriorityClass.Normal, int maxWaitMs = 1000) + public static bool TryExecute_AutoImpersonate(string executable, string arguments, out Process process, ProcessPriorityClass priorityClass = ProcessPriorityClass.Normal, int maxWaitMs = 1000) { return IsImpersonated ? - TryExecute_Impersonated(executable, arguments, priorityClass, maxWaitMs) : - TryExecute(executable, arguments, priorityClass, maxWaitMs); + TryExecute_Impersonated(executable, arguments, out process, priorityClass, maxWaitMs) : + TryExecute(executable, arguments, out process, priorityClass, maxWaitMs); } /// @@ -275,16 +282,16 @@ namespace DisplayMagician.Processes /// Process priority /// Maximum time to wait for completion /// true if process was executed and finished correctly - public static bool TryExecute_Impersonated(string executable, string arguments, ProcessPriorityClass priorityClass = ProcessPriorityClass.Normal, int maxWaitMs = 1000) + public static bool TryExecute_Impersonated(string executable, string arguments, out Process process, ProcessPriorityClass priorityClass = ProcessPriorityClass.Normal, int maxWaitMs = 1000) { IntPtr userToken; + process = null; if (!ImpersonationHelper.GetTokenByProcess(out userToken, true)) return false; try { - Process unused; //return TryExecute_Impersonated(executable, arguments, userToken, false, out unused, priorityClass, maxWaitMs); - return TryExecute_Impersonated(executable, arguments, userToken, out unused, priorityClass, maxWaitMs); + return TryExecute_Impersonated(executable, arguments, userToken, out process, priorityClass, maxWaitMs); } finally { diff --git a/DisplayMagician/Properties/AssemblyInfo.cs b/DisplayMagician/Properties/AssemblyInfo.cs index 3bd3a23..fc41841 100644 --- a/DisplayMagician/Properties/AssemblyInfo.cs +++ b/DisplayMagician/Properties/AssemblyInfo.cs @@ -26,8 +26,8 @@ using System.Resources; [assembly: Guid("e4ceaf5e-ad01-4695-b179-31168eb74c48")] // Version information -[assembly: AssemblyVersion("2.1.0.281")] -[assembly: AssemblyFileVersion("2.1.0.281")] +[assembly: AssemblyVersion("2.1.0.282")] +[assembly: AssemblyFileVersion("2.1.0.282")] [assembly: NeutralResourcesLanguageAttribute( "en" )] [assembly: CLSCompliant(true)] diff --git a/DisplayMagician/ShortcutRepository.cs b/DisplayMagician/ShortcutRepository.cs index e681732..595510f 100644 --- a/DisplayMagician/ShortcutRepository.cs +++ b/DisplayMagician/ShortcutRepository.cs @@ -936,6 +936,7 @@ namespace DisplayMagician List processesCreated = new List(); try { + //processesCreated = ProcessUtils.StartProcess(processToStart.Executable, processToStart.Arguments, processToStart.ProcessPriority); processesCreated = ProcessUtils.StartProcess(processToStart.Executable, processToStart.Arguments, processToStart.ProcessPriority); // Record the program we started so we can close it later @@ -1924,14 +1925,15 @@ namespace DisplayMagician { //Processes.PROCESS_INFORMATION processInfo; //if (ProcessUtils.CreateProcessWithPriority(stopProg.Executable, stopProg.Arguments, TranslatePriorityToClass(stopProg.ProcessPriority), out processInfo)) - if (ProcessUtils.StartProcess(stopProg.Executable, stopProg.Arguments, TranslatePriorityToClass(stopProg.ProcessPriority), out processInfo)) + ProcessUtils.StartProcess(stopProg.Executable, stopProg.Arguments, ProcessPriority.Normal); + /*if () { logger.Trace($"ShortcutRepository/RunShortcut: Successfully started Stop Program {stopProg.Executable} {stopProg.Arguments}"); } else { logger.Warn($"ShortcutRepository/RunShortcut: Unable to start Stop Program {stopProg.Executable} {stopProg.Arguments}"); - } + }*/ } catch (Exception ex) {