diff --git a/trunk/report_templates/SOFTWARE_ProfileList.qs b/trunk/report_templates/SOFTWARE_ProfileList.qs
new file mode 100644
index 0000000..4737f45
--- /dev/null
+++ b/trunk/report_templates/SOFTWARE_ProfileList.qs
@@ -0,0 +1,42 @@
+function IsValid(val) {
+ if(typeof val !== 'undefined') return true;
+ else return false;
+}
+
+function print_table_row(cell01,cell02) {
+ println("
",cell01," | ",cell02," |
");
+}
+
+// Global vars
+var val;
+
+println("");
+println(" Profile List");
+println(" ");
+println(" Profile List
");
+
+var profile_list=GetRegistryNodes("\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList");
+if(IsValid(profile_list) && profile_list.length>0) {
+ for(var i=0;i");
+ println(" "+profile_list[i]+"
");
+ println(" ");
+
+ // Get profile image path
+ val=GetRegistryKeyValue("\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\"+profile_list[i],"ProfileImagePath");
+ print_table_row("Profile image path:",IsValid(val) ? RegistryKeyValueToString(val.value,val.type) : "n/a");
+
+ // Get last load time (Saved as 2 dwords. Another "good" idea of M$ ;-))
+ var loadtime_low=GetRegistryKeyValue("\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\"+profile_list[i],"ProfileLoadTimeLow");
+ var loadtime_high=GetRegistryKeyValue("\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\"+profile_list[i],"ProfileLoadTimeHigh");
+ print_table_row("Profile load time:",(IsValid(loadtime_low) && IsValid(loadtime_high)) ? RegistryKeyValueToVariant(loadtime_low.value.append(loadtime_high.value),"filetime",0) : "n/a");
+
+ println("
");
+ println(" ");
+ }
+ println(" ");
+} else {
+ println(" None");
+}
+
+println("");