Ich arbeite an der Replikation der Windows 7/8 hinzufügen entfernen Programme Applet mit VBScript. Ich habe das Skript dazu gebracht, alle korrekten Einträge zu enthalten, aber ich konnte es nicht dazu bringen, alle korrekten zusätzlichen Informationen zu enthalten, die Windows anzeigt.Wohin zieht das Hinzufügen/Entfernen von Programmen Daten für die Spalte "Installiert am"?
Beispiel: Windows zeigt die Spalte "Installiert am" mit einem Datum an. In einigen Fällen ist es diese von den entsprechenden Registrierungsschlüssel wie bekommt:
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\InstallDate
HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\InstallDate
HKUS\USER - SID\Software\Microsoft\Windows\CurrentVersion\Uninstall\InstallDate
Nur sehr wenige Tasten haben tatsächlich den Wert Install und Windows immer diese Spalte gefüllt werden. Ich habe es geschafft, die Mehrheit der fehlenden stammt aus dem WMI zu greifen:
("SELECT * FROM Win32_Product Where Description = " & "'" & strName & "'" & "")
for each objSoftware in colSoftware
Date = objSoftware.InstallDate
Dies gibt nur die Daten von MSI installierten Anwendungen.
Ich dachte, vielleicht Windows "erraten" die Daten auf der Grundlage von Programmdateien/ProgramData Dateidaten, aber ich habe versucht, sie manuell zu ändern, und es ist nicht in Add/Remove widerspiegeln. Ich versuche herauszufinden, wie Windows dieses Datum zieht. Ich habe bemerkt, CCleaner kann add/remove ohne Fehler reproduzieren, so dass diese Informationen irgendwo verfügbar sind. Ich habe mich erschöpft, um danach zu suchen.
Der Prozess ist wahrscheinlich langsam, weil die Auswahl von 'Win32_Product' nicht nur die Objekte auflistet, sondern auch (erneut) validiert. Eine sauberere Möglichkeit besteht darin, die Informationen aus den 'Uninstall'-Schlüsseln in der Registrierung zu lesen. –
Mein Problem ist, dass die meisten Daten nicht in den Deinstallationsschlüsseln sind, wie ich bereits erwähnt habe. Weniger als 10% der Einträge auf meinem System haben das InstallDate als Wert. Windows bekommt dieses Datum von woanders und das Skript wird nicht wirklich funktionieren, bis ich weiß, wo sich dieser Ort befindet. – KevinD