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); }
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); } }