Example #1
0
        public static void RegForwarding(Options option, params string[] keys)
        {
            if (keys == null || keys.Length == 0)
            {
                return;
            }
            var backup = PathEx.Combine($"%TEMP%\\backup-{{{Math.Abs(PathEx.LocalPath.GetHashCode())}}}.reg");
            var file   = PathEx.Combine(PathEx.LocalDir, "Data\\settings.reg");

            switch (option)
            {
            case Options.Exit:
                if (keys.Length > 0)
                {
                    Reg.ExportKeys(file, keys);
                    foreach (var key in keys)
                    {
                        Reg.RemoveSubKey(key);
                    }
                }
                if (!File.Exists(backup))
                {
                    return;
                }
                Reg.ImportFile(backup);
                File.Delete(backup);
                break;

            default:
                if (!keys.Any(x => Reg.EntryExists(x, "Portable App")))
                {
                    if (!File.Exists(backup))
                    {
                        Reg.ExportKeys(backup, keys);
                    }
                    foreach (var key in keys)
                    {
                        Reg.RemoveSubKey(key);
                    }
                }
                foreach (var key in keys)
                {
                    Reg.Write(key, "Portable App", "True");
                }
                if (File.Exists(file))
                {
                    Reg.ImportFile(file);
                }
                break;
            }
        }
Example #2
0
        /// <summary>
        ///     Enables/disables the registry key redirection.
        /// </summary>
        /// <param name="option">
        ///     The option that determines whether the redirect will be enabled or disabled.
        /// </param>
        /// <param name="keys">
        ///     The registry keys for redirecting.
        /// </param>
        public static void KeyRedirection(PortalizerActions option, params string[] keys)
        {
            if (keys == null || keys.Length == 0)
            {
                return;
            }
            var backup = PathEx.Combine(Attributes.DataDir, $"Temp\\backup-{{{EnvironmentEx.MachineId}}}.reg");

            switch (option)
            {
            case PortalizerActions.Disable:
                if (keys.Length > 0)
                {
                    Reg.ExportKeys(Attributes.RegFilePath, keys);
                    foreach (var key in keys)
                    {
                        Reg.RemoveSubKey(key);
                    }
                    Reg.RemoveEntry(Attributes.RegPath, nameof(Attributes.RegKeys));
                }
                if (!File.Exists(backup))
                {
                    return;
                }
                Reg.ImportFile(backup);
                FileEx.TryDelete(backup);
                break;

            default:
                if (!Reg.SubKeyExists(Attributes.RegPath))
                {
                    Reg.CreateNewSubKey(Attributes.RegPath);
                }
                if (!Reg.EntryExists(Attributes.RegPath, nameof(Attributes.RegKeys)) && keys.Any(Reg.SubKeyExists))
                {
                    try
                    {
                        var dir = Path.GetDirectoryName(backup);
                        if (string.IsNullOrEmpty(dir))
                        {
                            throw new ArgumentNullException(dir);
                        }
                        if (!Directory.Exists(dir))
                        {
                            Directory.CreateDirectory(dir);
                        }
                        FileEx.Delete(backup);
                    }
                    catch (Exception ex)
                    {
                        Log.Write(ex);
                    }
                    if (!File.Exists(backup))
                    {
                        Reg.ExportKeys(backup, keys);
                    }
                    foreach (var key in keys)
                    {
                        Reg.RemoveSubKey(key);
                    }
                }
                Reg.Write(Attributes.RegPath, nameof(Attributes.RegKeys), keys, RegistryValueKind.MultiString);
                if (File.Exists(Attributes.RegFilePath))
                {
                    Reg.ImportFile(Attributes.RegFilePath);
                }
                break;
            }
        }
Example #3
0
 internal static bool EntryExists(string entry) =>
 Reg.EntryExists(CurKey, entry);