示例#1
0
    static int PrintRegKeys(ConsoleService c, string cmdName, string str)
    {
        ConsoleParam[] args =
        {
            new ConsoleParam("[root]", null, null, null, null),
            new ConsoleParam("key",    null, null, null, null),
        };

        ConsoleParamValueList vl = c.ParseCommandList(cmdName, str, args);

        string root = vl.DefaultParam.StrValue;
        string key  = vl["key"].StrValue;

        if (Env.IsWindows == false)
        {
            Con.WriteLine("Windows required.");
            return(0);
        }

        if (root._IsEmpty() || key._IsEmpty())
        {
            Con.WriteLine("Canceled.");
            return(Consts.ExitCodes.GenericError);
        }

        var root2 = RegRoot.LocalMachine.ParseAsDefault(root);

        MsReg.PrintRegKeys(root2, key);

        return(0);
    }
示例#2
0
        public static void PrintRegKeys(RegRoot root, string key, int depth = 0)
        {
            const int padUnit = 2;

            key._TryTrimStartWith(out key, StrCmpi, @"\");

            string pad1 = ' '._MakeCharArray(depth * padUnit);
            string pad2 = ' '._MakeCharArray((depth + 1) * padUnit);

            Con.WriteLine($"{pad1}[{root}\\{key}]");

            var x = MsReg.EnumKey(root, key);

            var subkeys = MsReg.EnumKey(root, key)._EmptyArrayIfNull().OrderBy(x => x, StrCmpi);
            var values  = MsReg.EnumValue(root, key)._EmptyArrayIfNull().OrderBy(x => x, StrCmpi);

            foreach (var value in values)
            {
                object?data = MsReg.ReadValue(root, key, value);
                Con.WriteLine($"{pad2}{value}='{data._ObjectToJson(compact: true)}'");
            }

            Con.WriteLine();
            foreach (var subkey in subkeys)
            {
                PrintRegKeys(root, key + @"\" + subkey, depth + 1);
            }
        }