installation of - كيف يمكنني اكتشاف إصدارات.NET Framework وحزم الخدمة المثبتة؟




server and (12)

كنت أرغب في الكشف عن وجود إصدار .NET 4.5.2 مثبت على النظام الخاص بي ، ولم أجد أي حل أفضل من ASoft .NET Version Detector .

لقطة لهذه الأداة تعرض إصدارات .NET مختلفة:

تم طرح سؤال مماثل here ، ولكنه كان مخصصًا لـ .NET 3.5. على وجه التحديد ، أنا أبحث عن ما يلي:

  1. ما هي الطريقة الصحيحة لتحديد إصدارات .NET Framework وحزم الخدمة المثبتة؟
  2. هل هناك قائمة بمفاتيح التسجيل التي يمكن استخدامها؟
  3. هل هناك أي تبعيات بين إصدارات الإطار؟

بالنسبة لنظام التشغيل 64 بت ، سيكون المسار كما يلي:

HKEY_LOCAL_MACHINE\SOFTWARE\wow6432Node\Microsoft\NET Framework Setup\NDP\

راجع here (MSDN).

يقترح MSDN مثالاً وظيفياً واحد يبدو للقيام بهذه المهمة للإصدار 1-4. وفقا لهذه المادة ، فإن طريقة الإخراج هي:

v2.0.50727  2.0.50727.4016  SP2
v3.0  3.0.30729.4037  SP2
v3.5  3.5.30729.01  SP1
v4
  Client  4.0.30319
  Full  4.0.30319

لاحظ أنه بالنسبة إلى "الإصدارات 4.5 والإصدارات الأحدث" ، توجد وظيفة أخرى.


كنت بحاجة إلى معرفة إصدار .NET Framework الذي كان لدي على الكمبيوتر ، وكل ما فعلته هو الانتقال إلى لوحة التحكم وتحديد الخيار "إلغاء تثبيت برنامج". بعد ذلك ، قمت بفرز البرامج بالاسم ، ووجدت ملف تعريف عميل Microsoft .NET Framework 4.


السجل هو الطريقة الرسمية لاكتشاف ما إذا تم تثبيت إصدار محدد من الإطار.

مفاتيح التسجيل المطلوبة التي تتغير حسب إصدار الإطار الذي تبحث عنه:

Framework Version  Registry Key
------------------------------------------------------------------------------------------
1.0                HKLM\Software\Microsoft\.NETFramework\Policy\v1.0\3705 
1.1                HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\Install 
2.0                HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\Install 
3.0                HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\InstallSuccess 
3.5                HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\Install 
4.0 Client Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client\Install
4.0 Full Profile   HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full\Install

عموما كنت تبحث عن:

"Install"=dword:00000001

باستثناء .NET 1.0 ، حيث تكون القيمة سلسلة ( REG_SZ ) بدلاً من رقم ( REG_DWORD ).

يتبع تحديد مستوى حزمة الخدمة نمطًا مشابهًا:

Framework Version  Registry Key
------------------------------------------------------------------------------------------
1.0                HKLM\Software\Microsoft\Active Setup\Installed Components\{78705f0d-e8db-4b2d-8193-982bdda15ecd}\Version 
1.0[1]             HKLM\Software\Microsoft\Active Setup\Installed Components\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}\Version 
1.1                HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\SP 
2.0                HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\SP 
3.0                HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\SP 
3.5                HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\SP 
4.0 Client Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client\Servicing
4.0 Full Profile   HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full\Servicing

[1] Windows Media Center or Windows XP Tablet Edition

كما ترى ، فإن تحديد مستوى SP لـ .NET 1.0 يتغير إذا كنت تعمل على Windows Media Center أو Windows XP Tablet Edition. مرة أخرى ، يستخدم .NET 1.0 قيمة سلسلة بينما يستخدم الآخرون DWORD.

لـ .NET 1.0 قيمة السلسلة في أي من هذه المفاتيح له تنسيق # ، # ، # #. # الأخير هو مستوى حزمة الخدمة.

على الرغم من أنني لم أطلب ذلك صراحةً ، إذا كنت تريد معرفة رقم الإصدار الصحيح للإطار ، فأنت تستخدم مفاتيح السجل التالية:

Framework Version  Registry Key
------------------------------------------------------------------------------------------
1.0                HKLM\Software\Microsoft\Active Setup\Installed Components\{78705f0d-e8db-4b2d-8193-982bdda15ecd}\Version 
1.0[1]             HKLM\Software\Microsoft\Active Setup\Installed Components\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}\Version 
1.1                HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322 
2.0[2]             HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\Version 
2.0[3]             HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\Increment
3.0                HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Version 
3.5                HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\Version 
4.0 Client Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Version 
4.0 Full Profile   HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Version 

[1] Windows Media Center or Windows XP Tablet Edition
[2] .NET 2.0 SP1
[3] .NET 2.0 Original Release (RTM)

مرة أخرى ، يستخدم .NET 1.0 قيمة سلسلة بينما يستخدم الآخرون DWORD.

ملاحظات إضافية

  • لـ .NET 1.0 قيمة السلسلة في أي من هذه المفاتيح له تنسيق #,#,####,# . الجزء #,#,#### من السلسلة هو إصدار Framework.

  • لـ .NET 1.1 ، نستخدم اسم مفتاح التسجيل نفسه ، والذي يمثل رقم الإصدار.

  • وأخيرًا ، إذا نظرت إلى تبعيات ، يضيف .NET 3.0 وظائف إضافية إلى .NET 2.0 بحيث يجب على كل من .NET 2.0 و. NET 3.0 أن يتم تركيبهما ليتم تأكيدهما بشكل صحيح أنه تم تثبيت .NET 3.0. وبالمثل ، يضيف .NET 3.5 وظائف إضافية إلى .NET 2.0 و .NET 3.0 ، لذلك يجب أن يتم تقييم .NET 2.0 و .NET 3.0 و .NET 3. إلى أن يتم التثبيت بشكل صحيح لتأكيد تثبيت .NET 3.5.

  • يقوم .NET 4.0 بتثبيت إصدار جديد من CLR (CLR الإصدار 4.0) والذي يمكن تشغيله جنبًا إلى جنب مع CLR 2.0.

تحديث لـ .NET 4.5

لن يكون هناك مفتاح v4.5 في التسجيل إذا تم تثبيت .NET 4.5. بدلاً من ذلك ، عليك التحقق مما إذا كان المفتاح HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full يحتوي على قيمة تسمى Release . إذا كانت هذه القيمة موجودة ، فسيتم تثبيت .NET 4.5 ، وإلا لن تكون كذلك. يمكن العثور على المزيد من التفاصيل here here .


تحديث لـ .NET 4.5.1

الآن ، يتوفر .NET 4.5.1 على القيمة الفعلية للمفتاح المسمى Release في السجل يجب التحقق منها ، وليس فقط وجودها. تعني القيمة 378758 أنه تم تثبيت .NET Framework 4.5.1. ومع ذلك ، كما هو موضح here هذه القيمة هي 378675 على Windows 8.1.


هناك أداة واجهة المستخدم الرسومية المتاحة ، ASoft .NET Version Detector ، والتي أثبتت دائما موثوقة للغاية. يمكنه إنشاء ملفات XML عن طريق تحديد اسم ملف إخراج XML في سطر الأوامر.

يمكنك استخدام هذا للأتمتة. إنه برنامج صغير مكتوب بلغة غير تابعة لـ .NET ولا يتطلب التثبيت.


في Windows 7 (يجب أن يعمل مع Windows 8 أيضًا ، ولكني لم أختبره):

انتقل إلى موجه الأوامر

خطوات للانتقال إلى موجه الأوامر:

  1. انقر فوق قائمة ابدأ
  2. في مربع البحث ، اكتب "cmd" (بدون علامتي الاقتباس)
  3. افتح cmd.exe

في كمد ، اكتب هذا الأمر

wmic /namespace:\\root\cimv2 path win32_product where "name like '%%.NET%%'" get version

هذا يعطي أحدث إصدار من NET Framework مثبت.

يمكن للمرء أيضا محاولة استخدام Raymond.cc لنفسه .


تعداد المفاتيح الفرعية من HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP . كل مفتاح فرعي هو إصدار .NET . يجب أن يكون قيمة Install=1 إذا كانت موجودة على الجهاز ، وهي قيمة SP تعرض حزمة الخدمة وقيمة MSI=1 إذا تم تثبيتها باستخدام MSI. (لا يحتوي .NET 2.0 على نظام التشغيل Windows Vista على آخر واحد على سبيل المثال ، لأنه جزء من نظام التشغيل.)


هذا هو برنامج نصي PowerShell للحصول على إصدارات .NET Framework المثبتة

function Get-KeyPropertyValue($key, $property)
{
    if($key.Property -contains $property)
    {
        Get-ItemProperty $key.PSPath -name $property | select -expand $property
    }
}

function Get-VersionName($key)
{
   $name = Get-KeyPropertyValue $key Version
   $sp = Get-KeyPropertyValue $key SP
   $install = Get-KeyPropertyValue $key Install
   if($sp)
   {
        "$($_.PSChildName) $name SP $sp"
   }
   else{
    "$($_.PSChildName) $name"
   }
}

function Get-FrameworkVersion{
   dir "hklm:\SOFTWARE\Microsoft\NET Framework Setup\NDP\" |? {$_.PSChildName -like "v*"} |%{
    if( $_.Property -contains "Version")
    {
        Get-VersionName $_
    }
    else{
        $parent = $_
        Get-ChildItem $_.PSPath |%{
            $versionName = Get-VersionName $_
            "$($parent.PSChildName) $versionName"
            }
        }
    }
}


$v4Directory = "hklm:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"
if(Test-Path $v4Directory)
{
    $v4 = Get-Item $v4Directory
    $version = Get-KeyPropertyValue $v4 Release
    switch($version){
        378389 {".NET Framework 4.5"; break;}
        378675 {".NET Framework 4.5.1 installed with Windows 8.1 or Windows Server 2012 R2"; break;}
        378758 {".NET Framework 4.5.1 installed on Windows 8, Windows 7 SP1, or Windows Vista SP2"; break;}
        379893 {".NET Framework 4.5.2"; break;}
        { 393295, 393297 -contains $_} {".NET Framework 4.6"; break;}
        { 394254, 394271 -contains $_} {".NET Framework 4.6.1"; break;}
        { 394802, 394806 -contains $_} {".NET Framework 4.6.2"; break; }
    }
}

تمت كتابتها استناداً إلى كيفية: تحديد ما هي إصدارات .NET Framework المثبتة . الرجاء استخدام الدالة Get-FrameworkVersion () للحصول على معلومات حول إصدارات .NET Framework المثبتة.


باستخدام مكتبة Signum.Utilities من SignumFramework (التي يمكنك استخدامها بشكل مستقل) ، يمكنك الحصول عليها بشكل جيد وبدون التعامل مع التسجيل بنفسك:

AboutTools.FrameworkVersions().ToConsole();
//Writes in my machine:
//v2.0.50727 SP2
//v3.0 SP2
//v3.5 SP1







.net installation version-detection