"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني استرداد معلومات الإصدار من ملفات DLL وEXEs باستخدام Win32 API في C أو C++؟

كيف يمكنني استرداد معلومات الإصدار من ملفات DLL وEXEs باستخدام Win32 API في C أو C++؟

تم النشر بتاريخ 2024-11-18
تصفح:230

How can I retrieve version information from DLLs and EXEs using Win32 API in C or C  ?

الحصول على معلومات الإصدار لملفات DLL و EXEs

تتطلب العديد من التطبيقات القدرة على استرداد معلومات الإصدار من الملفات. يتم استخدام هذه المعلومات لأغراض العرض، مثل إظهار رقم الإصدار في مربع حوار الخصائص.

توفر Win32 API العديد من الوظائف التي يمكن استخدامها للحصول على معلومات الإصدار. أحد الأساليب الشائعة هو استخدام واجهة برمجة تطبيقات GetFileVersionInfo.

استخدام GetFileVersionInfo

تسترد وظيفة GetFileVersionInfo معلومات حول موارد إصدار الملف. الخطوات المتبعة في استخدام هذه الوظيفة هي:

  1. استدعاء GetFileVersionInfo مع مسار الملف ومؤشر إلى متغير DWORD الذي سيتلقى مؤشر معلومات الإصدار.
  2. استدعاء GetFileVersionInfoSize مع مسار الملف والمقبض من الخطوة 1 لتحديد حجم معلومات الإصدار.
  3. تخصيص مخزن مؤقت بالحجم الذي تم استرداده في الخطوة 2.
  4. اتصل بـ GetFileVersionInfo مرة أخرى باستخدام مسار الملف والمقبض والحجم والمؤشر إلى المخزن المؤقت من الخطوة 3 لاسترداد معلومات الإصدار.

استخراج بيانات الإصدار

بمجرد استرداد معلومات الإصدار، يمكنك استخدام وظيفة VerQueryValue لاستخراج معلومات محددة. يوضح نموذج التعليمات البرمجية التالي كيفية استخراج إصدار المنتج وأرقام إصدارات الملف:

LPSTR verData = new char[verSize];

if (GetFileVersionInfo(szVersionFile, verHandle, verSize, verData))
{
    if (VerQueryValue(verData, "\\", (VOID FAR* FAR*)&lpBuffer, &size))
    {
        if (size)
        {
            VS_FIXEDFILEINFO *verInfo = (VS_FIXEDFILEINFO *)lpBuffer;
            if (verInfo->dwSignature == 0xfeef04bd)
            {
                TRACE("File Version: %d.%d.%d.%d\n",
                (verInfo->dwFileVersionMS >> 16) & 0xffff,
                (verInfo->dwFileVersionMS >> 0) & 0xffff,
                (verInfo->dwFileVersionLS >> 16) & 0xffff,
                (verInfo->dwFileVersionLS >> 0) & 0xffff
                );
            }
        }
    }
}

باتباع هذه الخطوات، يمكنك الحصول برمجيًا على إصدار المنتج وأرقام إصدارات الملف لملفات DLL أو ملفات EXE باستخدام واجهات برمجة تطبيقات Win32 الأصلية في C أو C .

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3