2013-09-08 5 views
6

मैं Windows 7/8 नकल पर काम कर रहा हूँ जोड़ने VBScript के साथ कार्यक्रमों एप्लेट को हटा दें। मुझे सभी सही प्रविष्टियों को शामिल करने के लिए स्क्रिप्ट प्राप्त हुई है, लेकिन मैं इसे विंडोज़ डिस्प्ले की सभी सही अतिरिक्त जानकारी शामिल करने में सक्षम नहीं हूं।प्रोग्राम्स जोड़ें/निकालें "इंस्टॉल किए गए" कॉलम के लिए डेटा खींचते हैं?

एक उदाहरण के रूप: विंडोज को प्रदर्शित करता है एक तारीख के साथ कॉलम "पर स्थापित"। कुछ मामलों में यह की तरह प्रासंगिक रजिस्ट्री कुंजियों से इन हो जाता है में:

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

बहुत कम चाबियाँ वास्तव में InstallDate मूल्य है और Windows हमेशा इस कॉलम भरा मिलता है। मैं WMI से लापता दिनांकों के बहुमत हड़पने के लिए प्रबंधित किया है:

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

यह केवल एमएसआई से दिनांक अनुप्रयोगों स्थापित कर देता है।

मैं शायद सोच रहा था विंडोज "अनुमान लगाया" प्रोग्राम फ़ाइलें/ProgramData फ़ाइल दिनांक के आधार पर दिनांक, लेकिन मैं उन्हें मैन्युअल रूप से बदल रहा है की कोशिश की है और यह ऐड में प्रतिबिंबित नहीं होता/निकालें। मैं यह पता लगाने की कोशिश कर रहा हूं कि विंडोज इस तारीख को कैसे खींचता है। मैंने देखा है कि CCleaner त्रुटि के बिना जोड़ें/हटा सकता है, इसलिए यह जानकारी कहीं भी उपलब्ध है। मैंने खुद को ढूंढने के लिए खुद को थका दिया है।

+0

प्रक्रिया शायद धीमी है, क्योंकि 'Win32_Product' से चयन न केवल वस्तुओं को सूचीबद्ध करता है, बल्कि (पुनः) उन्हें मान्य करता है। रजिस्ट्री में 'अनइंस्टॉल करें' कुंजी से जानकारी को पढ़ने का एक क्लीनर तरीका है। –

+0

मेरे समस्या यह है कि सबसे दिनांकों के रूप में मैं उल्लेख किया है, स्थापना रद्द करें कुंजी में नहीं हैं। मेरे सिस्टम पर प्रविष्टियों में से 10% से कम एक मान के रूप में InstallDate है। विंडोज़ इस तारीख को कहीं और से प्राप्त कर रहा है और स्क्रिप्ट वास्तव में प्रभावी नहीं होगी जब तक कि मुझे पता न हो कि वह स्थान कहां है। – KevinD

उत्तर

14

चारों ओर खिलवाड़ का एक बहुत बाद मैं निर्धारित किया है कि विंडोज प्रोग्राम जोड़ें/निकालें हो जाता है कम से कम तीन संभावित स्थानों से तारीख "पर स्थापित":

  • एमएसआई स्थापित के लिए आवेदन पत्र में यह WIN32_Product से तारीख हो जाता है (अब तक का सबसे आम तरीका)

  • गैर-एमएसआई अनुप्रयोगों के लिए यह संबंधित रजिस्ट्री में InstallDate मान के लिए दिखता है अनइंस्टॉल कुंजी (उदाहरण: HKLM \ सॉफ़्टवेयर \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ Google क्रोम)

  • गैर-एमएसआई अनुप्रयोगों के लिए जिनके पास InstallDate नहीं है, विंडोज़ उस अंतिम तारीख को देखता है जो अनइंस्टॉल कुंजी को "इंस्टॉल किया गया" के लिए उस तारीख को लिखा और उपयोग करता है।

यह यह पिछले विधि था कि मुझे इतने लंबे समय के लिए स्टम्प्ड था। इसका अर्थ यह है कि किसी भी समय एक गैर-एमएसआई प्रोग्राम जो कि InstallDate मान को याद कर रहा है अद्यतन किया गया है, और अनइंस्टॉल कुंजी में संस्करण संख्या संशोधित की गई है, आपको "इंस्टॉल किया गया" दिनांक भी अपडेट होगा और उस प्रोग्राम की उपस्थिति देता है बस स्थापित किया गया है।

एक उदाहरण: \ Wow6432Node \ Microsoft HKLM \ SOFTWARE \ Windows \ CurrentVersion \ स्थापना रद्द करें \ एडोब फ़्लैश प्लेयर प्लगइन

अपने फ़्लैश प्लेयर प्लग इन इंस्टॉल करें तो एमएसआई आधारित नहीं था, तो आप इस कुंजी में जाने और संशोधित कर सकते हैं 11.8.800.93 को 11.8.800.94 से संस्करण और अपने जोड़ें/निकालें आज के लिए "पर स्थापित करें" तारीख बदल जाएगा।

+0

सही उत्तर! – Xaruth

+0

धन्यवाद। यह मुझे संस्करण के रूप में भी stumped था। मैं WIN32_Product क्लास में भी संस्करण की जांच करने जा रहा हूं - मैं सबसे अधिक संभावना होगी। – anil

+0

सही! बहुत बहुत धन्यवाद – Frank

संबंधित मुद्दे