"المناسبة" والطريقة الموثوقة للحصول على جميع برامج Windows المثبتة في Python؟

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

سؤال

لقد رأيت العديد من الطرق لاسترداد البرامج المثبتة على WinXP+ في Python. ما هو لائق و الأكثر قوة طريقة للقيام بذلك؟

حاليا أنا وصول HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall وقراءة كل من المفاتيح من هناك للحصول على قائمة. (قيل لي إن هذا ليس لائق طريقة للقيام بالأشياء) لقد رأيت أمثلة على استخدام WMI/Win32COM للقيام بذلك أيضًا ، لكنني رأيت تعليقات مع تلك التطبيقات التي قد يتم إيقاف تشغيل WMI على أجهزة معينة وأنها ليست حلاً موثوقًا به للغاية.

هل هناك طريقة مناسبة وموثوقة للحصول على قائمة بالبرامج المثبتة؟ لم تعمل أي من أمثلة WMI التي رأيتها على هذا الجهاز (ومن هنا ترددي في استخدامه ، فأنا أقوم فقط بتشغيل WinFlp ؛ وهو أمر تم تجريده من XP.)

يبدو أنني وجدت أيضًا مقالة Technet التي ظهرت فيها عمليات البحث التي تم تقديمها إلى إجابة مماثلة على سؤالي: http://gallery.technet.microsoft.com/scriptcenter/en-us/154dcae0-57a1-4c6e-8f9f-b215904485b7

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

المحلول

البرنامج النصي Technet الذي تشير إليه يعمل بشكل مثالي تحت Win 7 (مع Python 2.5 32bits) ، وأنا حقًا لا أستطيع أن أرى لماذا لا ينبغي.

نصائح أخرى

WMI هي الطريقة الصحيحة للبحث عن البرامج المثبتة حيث ستعمل عبر إصدارات مختلفة من نظام التشغيل وسيتم دعمها للمضي قدمًا. قد يعمل البحث عن عمليات شاملة محددة بشكل جيد لإصدارات محددة من Windows ولكن ليس مضمونًا للعمل في المستقبل. فيما يلي بعض رمز Python البسيط للتحقق من مزامنة المربع التي جربتها للتو على Windows 7. لاحظ أنه لن تكون جميع الحقول متاحة لكل منتج ، لذا كن على علم بأنها ستكون "لا شيء".

import wmi
w = wmi.WMI()
for p in w.Win32_Product():
    if 'Box, Inc.' == p.Vendor and p.Caption and 'Box Sync' in p.Caption:
        print 'Installed {}'.format(p.Version)

الجانب السلبي الذي رأيته مع WMI هو أنه بطيء للغاية في البدء.

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