2013-09-08 33 views
6

Tôi đang làm việc trên sao chép Windows 7/8 thêm loại bỏ chương trình applet với VBScript. Tôi đã nhận được kịch bản để bao gồm tất cả các mục chính xác, nhưng tôi đã không thể có được nó để bao gồm tất cả các thông tin bổ sung chính xác Windows hiển thị.Các chương trình Thêm/Loại bỏ kéo dữ liệu vào cột "Đã cài đặt trên" ở đâu?

Ví dụ: Windows hiển thị cột "Đã cài đặt trên" với một ngày. Trong một số trường hợp, các khóa này nhận được từ các khóa đăng ký có liên quan như:

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

Rất ít khóa thực sự có giá trị InstallDate và Windows luôn nhận được cột này. Tôi đã cố gắng chiếm đa số các ngày bị thiếu từ WMI:

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

Chỉ cung cấp ngày từ các ứng dụng được cài đặt MSI. Tôi đã nghĩ rằng có lẽ Windows "đoán" ngày dựa trên các tập tin chương trình/ProgramData ngày tập tin, nhưng tôi đã cố gắng tự thay đổi chúng và nó không được phản ánh trong Add/Remove. Tôi đang cố gắng tìm ra cách Windows kéo ngày này. Tôi đã nhận thấy CCleaner có thể tái tạo thêm/xóa mà không có lỗi, vì vậy thông tin này có sẵn ở đâu đó. Tôi vừa kiệt sức để tìm kiếm nó.

+0

Quá trình có thể chậm, vì việc chọn từ 'Win32_Product' không chỉ liệt kê các đối tượng, mà còn (lại) xác nhận chúng. Một cách gọn gàng hơn là đọc thông tin từ các phím 'Uninstall' trong registry. –

+0

Vấn đề của tôi là hầu hết các ngày không nằm trong các phím gỡ cài đặt, như tôi đã đề cập. Ít hơn 10% số mục nhập trên hệ thống của tôi có giá trị InstallDate. Windows đang lấy ngày này từ một nơi khác và kịch bản sẽ không thực sự hiệu quả cho đến khi tôi biết vị trí đó ở đâu. – KevinD

Trả lời

14

Sau rất nhiều phiền xung quanh tôi xác định rằng Windows Add/Remove programs được các "cài đặt trên" ngày từ ít nhất ba địa điểm tiềm năng:

  • Đối với MSI cài đặt các ứng dụng nó được ngày từ Win32_Product (Theo cách phổ biến nhất)

  • Đối với các ứng dụng không phải MSI, hãy tìm giá trị InstallDate trong khóa gỡ cài đặt tương ứng (Ví dụ: HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ Google Chrome)

  • Đối với các ứng dụng không phải của MSI không có InstallDate, Windows sẽ xem ngày cuối cùng mà khóa Gỡ cài đặt được ghi vào và sử dụng ngày đó cho "Đã cài đặt trên".

Đây là phương pháp cuối cùng khiến tôi bối rối quá lâu. Điều này có nghĩa là bất cứ khi nào một chương trình không phải MSI thiếu giá trị InstallDate được cập nhật và số phiên bản trong Khóa Gỡ cài đặt được sửa đổi, bạn sẽ thấy ngày "Đã cài đặt" cũng cập nhật và cung cấp sự xuất hiện của chương trình đó vừa được cài đặt.

Một thí dụ: HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ Adobe Flash Player Plugin

Nếu Flash Player Plugin của bạn cài đặt được không MSI dựa, sau đó bạn có thể đi vào phím này và sửa đổi phiên bản từ 11.8.800.94 đến 11.8.800.93 và Add/Remove của bạn sẽ thay đổi ngày "Install On" thành hôm nay.

+0

câu trả lời hoàn hảo! – Xaruth

+0

Cảm ơn. Điều này đã khiến tôi bối rối như phiên bản. Tôi sẽ kiểm tra phiên bản cũng trong lớp WIN32_Product - Tôi sẽ có nhiều khả năng. – anil

+0

hoàn hảo! Cảm ơn rất nhiều – Frank

Các vấn đề liên quan