كيفية العثور على موقع البرنامج في السجل ، إذا كنت أعرف MSI GUID؟

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

  •  28-09-2019
  •  | 
  •  

سؤال

لقد قمت بتثبيت بعض MSI مع GUID (0733556C-37E8-4123-A801-D3E6C5151617). البرنامج المسجل في السجل: hkey_local_machine software microsoft windows currentversion uninstall ()

القيمة uninstallString = msiexec.exe / i (0733556C-37E8-4123-A801-D3E6C5151617)

سؤالي هو: كيف تعرف Utility msiexec.exe الاسم والمسار إلى الملف الذي تريد تشغيله عند إزالة البرامج؟ أين يمكن العثور على هذه المعلومات في السجل؟

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

المحلول

يحتفظ Windows بمعلومات تكوين Windows Installer مخفية ومشفية في السجل. لا يمكن تصويبها بالعين البشرية لأن أجزاء أخرى من السجل.

للاستعلام/تعديل/حذف هذه المعلومات ، ستحتاج إلى استخدام وظائف MSI.
(مرجع وظيفة المثبت)

لسؤالك الخاص ، جرب الوظيفة msigetproductinfo.

نصائح أخرى

إليك برنامج C# بسيط يستخدم msigetproductinfo ، كما يقول ويليام ليرا ، للحصول على الموقع الفعلي للمثبت المخزونات على القرص.

class Program
{
    static void Main(string[] args)
    {
        Int32 len = 512;
        System.Text.StringBuilder builder = new System.Text.StringBuilder(len);
        MsiGetProductInfo("{89C098E5-C108-49F9-9B1D-10503C6D8A05}", "LocalPackage", builder, ref len);
        Console.WriteLine(builder.ToString());
        Console.ReadLine();
    }

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

يمكنك المحاولة من سطر الأوامر:

wmic product where "Name like '%your software here%'" get Name, Version, PackageCode

هناك فائدة مجانية من أبحاث برامج Tarma التي وجدتها مفيدة لهذا. احصل عليه من موقع الويب الخاص بهم.

لا تحتاج إلى أي برنامج. هذا يعمل في Windows 10 وأعتقد أنه صالح لنظام التشغيل Windows 7 أيضًا.

إذا كان رمز المنتج الخاص بك هو 0733556C-37E8-4123-A801-D3E6C5151617. حاول العثور على المفتاح C65533708E7332148A103D6E5C516171 (بشكل أساسي عكسه) بمجرد العثور عليه ، استعرض مفتاح InstallProperties الفرعي ، إذا لم يكن موجودًا ، فحاول العثور على نتيجة أخرى. بمجرد العثور على installProperties ، افتح وابحث عن مفتاح LocalPackage. ثم لديك المسار لحزمة MSI التي يحفظها MSI كذاكرة التخزين المؤقت عند تثبيت التطبيق الخاص بك.

فرضية هذا السؤال مضللة لأن إلغاء التثبيت في السجل لا يتم استخدامه عند القيام بإلغاء التثبيت. المضي قدما وتغيير السلسلة لاختبار هذا - لن تستخدم السلسلة المعدلة.

على الرغم من أن الإشارات إلى الأشياء في السجل قد تكون جذابة ، فإن الإجابة المختصرة هي أن بيانات تثبيت Windows في السجل هي تفاصيل التنفيذ. يسأل السؤال بشكل أساسي عن كيفية عمل MSICONFIGUREPRODER (.... installstate_absent ...) ، ومن غير المجدي تخمين تفاصيل التنفيذ وأين قد يكون في السجل. إنها واجهات برمجة التطبيقات على طول الطريق. ربما كانت هناك مهمة فعلية قد يكون الملصق قد أراد إنجازها ، ولكن يتم إقناعها بسؤال عن كيفية عمل إلغاء التثبيت.

هذا الخرائط الرئيسية ل HKEY_CLASSES_ROOT\Installer\Products\.

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