2009-01-05 14 views

उत्तर

8

उस जानकारी को प्राप्त करने का "उचित" तरीका :: MsiGetProductInfo() का उपयोग करना है। PInvoke तुच्छ होना चाहिए।

1

मुझे ऐसा कोई एपीआई नहीं पता जो ऐसा करेगा, लेकिन आप सीधे रजिस्ट्री से मूल्य को पढ़ने का प्रयास कर सकते हैं। निम्न कुंजी जांचें:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{product-id} 
    InstallDate = 20081004 

अनइंस्टॉल कुंजी के अंतर्गत संग्रहीत जानकारी प्रदर्शित होती है उदा। नियंत्रण कक्ष में -> प्रोग्राम जोड़ें या निकालें।

10

धन्यवाद रोब! मैंने नीचे एक पूर्ण सी # उदाहरण जोड़ा है।

[DllImport("msi.dll", CharSet = CharSet.Unicode)] 
    static extern Int32 MsiGetProductInfo(string product, string property, [Out] StringBuilder valueBuf, ref Int32 len); 

    static void Main(string[] args) 
    { 
     Int32 len = 512; 
     var builder = new StringBuilder(len); 
     MsiGetProductInfo("{0db93d2f-a9e7-417f-9425-5e61e82c0868}", "InstallDate", builder, ref len); 

     var installDate = DateTime.ParseExact(builder.ToString(), "yyyyMMdd", CultureInfo.InvariantCulture); 

     Console.WriteLine(installDate); 
    } 
0

रजिस्ट्री में InstallDate कुंजी खासकर जब प्रोग्राम (एमएसआई के माध्यम से के साथ स्थापित नहीं किया गया है उदाहरण के लिए के रूप में, हमेशा वहाँ नहीं है एडोब फ़्लैश प्लेयर प्लगइन, डेमॉन उपकरण, 7-ज़िप, पिकासा, TeamViewer, मोज़िला फ़ायरफ़ॉक्स)।

0

एक और "उचित" तरीका है कि आप निश्चित रूप से "निश्चित" के लिए कुछ फ़ाइल की निर्माण तिथि प्राप्त कर सकते हैं। मेरे मामले में यह "unins000.exe" है जो (पुनः) इनो सेटअप v5 द्वारा बनाया गया है। कोई PInvoke शामिल नहीं है लेकिन बस FileInfo के अस्तित्व और CreationTime गुणों का उपयोग करें!

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