الحصول على تاريخ تثبيت من التعليمات البرمجية المدارة

StackOverflow https://stackoverflow.com/questions/414653

  •  03-07-2019
  •  | 
  •  

سؤال

هل هناك API تمكنت من استرداد التطبيق تثبيت التاريخ باستخدام GUID المنتج؟

وشكرا. سكوت

هل كانت مفيدة؟

المحلول

والطريقة "الصحيحة" للحصول على تلك المعلومات هو استخدام :: MsiGetProductInfo (). يجب أن يكون PInvoke تافهة.

نصائح أخرى

وبفضل روب! واضاف لقد الكامل C # المثال أدناه.

    [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);
    }

وأنا لا أعرف عن أي API التي سوف نفعل ذلك، ولكن هل يمكن أن تحاول قراءة القيمة من التسجيل مباشرة. تحقق المفتاح التالي:

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

ويتم عرض المعلومات المخزنة تحت مفتاح إلغاء التثبيت على سبيل المثال في لوحة التحكم -> إضافة أو إزالة البرامج.

ومفتاح InstallDate في التسجيل ليست دائما هناك، وخصوصا عندما لم يتم تثبيت البرنامج مع خلال MSI (كما هو الحال مثلا أدوبي فلاش لاعب البرنامج المساعد، أدوات DAEMON، 7-ZIP، بيكاسا، برنامج TeamViewer، وموزيلا فايرفوكس ).

وهناك طريقة أخرى "المناسبة" هو الحصول على تاريخ إنشاء بعض الملفات تعلمون ل "بالتأكيد" يتم إضافتها بواسطة المثبت. في حالتي انها "unins000.exe" الذي هو (إعادة) التي أنشأتها ابتكارات V5 الإعداد. لا PInvoke الضلوع، ولكن لمجرد استخدام لFileInfo موجود وخصائص CreationTime!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top