public static bool ClearFileLock(string basePath) { bool success = false; //take off the drive portion due to limitation in how killhandle works for file name string root = Directory.GetDirectoryRoot(basePath).Substring(0, 2); basePath = basePath.Replace(root, string.Empty); string fileToUnlock = basePath + "\\" + Program.GW_DAT; //get list of currently running system processes Process[] processList = Process.GetProcesses(); foreach (Process i in processList) { //filter for guild wars ones if (i.ProcessName.Equals(Program.GW_PROCESS_NAME, StringComparison.OrdinalIgnoreCase)) { if (HandleManager.KillHandle(i, fileToUnlock, true)) { success = true; } } } return(success); }
public static bool ClearMutex() { bool success = false; //get list of currently running system processes Process[] processList = Process.GetProcesses(); foreach (Process i in processList) { //filter for guild wars ones if (i.ProcessName.Equals(Program.GW_PROCESS_NAME, StringComparison.OrdinalIgnoreCase)) { if (HandleManager.KillHandle(i, Program.MUTEX_MATCH_STRING, false)) { success = true; } } } return(success); }