private string GetRegistryPath(Session session, RegistryRoot root, string key, string name) { bool allUsers = session.EvaluateCondition("ALLUSERS = 1", true); string rootName = "????"; switch(root) { case RegistryRoot.LocalMachine : rootName = "HKLM"; break; case RegistryRoot.CurrentUser : rootName = "HKCU"; break; case RegistryRoot.Users : rootName = "HKU"; break; case RegistryRoot.UserOrMachine: rootName = (allUsers ? "HKLM" : "HKCU"); break; case RegistryRoot.ClassesRoot : rootName = (allUsers ? @"HKLM\Software\Classes" : @"HKCU\Software\Classes"); break; // TODO: Technically, RegistryRoot.ClassesRoot should be under HKLM on NT4. } if(name.Length == 0) name = "(Default)"; if(name == "+" || name == "*") name = ""; else name = " : " + name; using(Record formatRec = new Record(0)) { formatRec[0] = String.Format(@"{0}\{1}{2}", rootName, key, name); return session.FormatRecord(formatRec); } }