2013-09-08 12 views
6

Sto lavorando per replicare l'applet per la rimozione di Windows 7/8 da rimuovere con VBScript. Ho ottenuto lo script per includere tutte le voci corrette, ma non sono stato in grado di farlo includere tutte le informazioni aggiuntive corrette di Windows.Dove vengono aggiunti i programmi Aggiungi/Rimuovi per la colonna "Installato su"?

Ad esempio: Windows visualizza la colonna "Installato su" con una data. In alcuni casi si ottiene questi dalle chiavi di registro rilevanti come:

HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\InstallDate 
HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\InstallDate 
HKUS\USER - SID\Software\Microsoft\Windows\CurrentVersion\Uninstall\InstallDate 

Molto pochi tasti in realtà hanno il valore InstallDate e Windows sempre ottenere questa colonna riempiti. Sono riuscito a prendere la maggior parte delle date mancanti da WMI:

("SELECT * FROM Win32_Product Where Description = " & "'" & strName & "'" & "") 
for each objSoftware in colSoftware 
Date = objSoftware.InstallDate 

Questo dà solo le date da MSI applicazioni installate.

Stavo pensando che Windows "ha indovinato" le date in base alle date dei file Program Files/ProgramData, ma ho provato a modificarle manualmente e non si riflette in Aggiungi/Rimuovi. Sto cercando di capire come Windows tira questa data. Ho notato che CCleaner può riprodurre add/remove senza errori, quindi questa informazione è disponibile da qualche parte. Mi sono appena stancato di cercarlo.

+0

Il processo probabilmente è lento, perché la selezione da 'Win32_Product' non solo elenca gli oggetti, ma anche (ri) li convalida. Un modo più semplice è leggere le informazioni dalle chiavi 'Uninstall' nel registro. –

+0

Il mio problema è che la maggior parte delle date non sono nelle chiavi di disinstallazione, come ho detto. Meno del 10% delle voci sul mio sistema ha come valore InstallDate. Windows sta ottenendo questa data da un'altra parte e lo script non sarà realmente efficace finché non saprò dove si trova. – KevinD

risposta

14

Dopo un sacco di fare in giro ho deciso che Windows Aggiungi/Rimuovi programmi ottiene il "installati su un" data da almeno tre possibili posizioni:

  • per MSI installato le applicazioni si ottiene la data da Win32_Product (Di gran lunga il modo più comune)

  • Per le applicazioni non MSI cerca il valore InstallDate nel registro corrispondente Chiave di disinstallazione (Esempio: HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ Google Chrome)

  • Per le applicazioni non MSI che non dispongono di InstallDate, Windows cerca di vedere l'ultima data in cui è stata scritta la chiave di disinstallazione e utilizza tale data per "Installato su".

È stato questo ultimo metodo che mi ha costretto per così tanto tempo. Ciò significa che ogni volta che un programma non MSI che manca il valore InstallDate viene aggiornato e il numero di versione nella chiave di disinstallazione viene modificato, noterai che la data "Installato su" si aggiorna e dà l'aspetto di quel programma appena stato installato

Un esempio: HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ Adobe Flash Player Plugin

Se il Flash Player Plugin installazione non era basata MSI, quindi si può andare in questa chiave e modificare la versione da 11.8.800.94 a 11.8.800.93 e il tuo Aggiungi/Rimuovi cambierà la data di "Installa in" a oggi.

+0

risposta perfetta! – Xaruth

+0

Grazie. Questo mi ha lasciato perplesso come la versione. Vado a verificare la versione anche nella classe WIN32_Product - ci sarò probabilmente. – anil

+0

perfetto! molte grazie – Frank

Problemi correlati