.NET 3.5 SP1 स्थापित होने पर मैं कैसे बताऊँ?


91

मुझे पता कैसे चलेगा कि क्या SP1 को .NET 3.5 वाले सर्वर पर स्थापित किया गया है?

जवाबों:


18

नियंत्रण कक्ष से प्रोग्राम जोड़ें / निकालें का उपयोग करें।


1
जाओ पता लगाओ। बाद में, मैंने सोचा कि मैं आपके प्रश्न के लिए एक "प्रोग्रामेटिकली" बिंदु से चूक गया, गाइ।
आर.पी.

135

को देखो HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\। इनमें से एक सत्य होना चाहिए:

  • Versionउस कुंजी का मान 3.5.30729.01 होना चाहिए
  • या SPउसी कुंजी में मान 1 होना चाहिए

C # में (पहली टिप्पणी से लिया गया), आप इन पंक्तियों के साथ कुछ कर सकते हैं:

const string name = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5";
RegistryKey subKey = Registry.LocalMachine.OpenSubKey(name);
var version = subKey.GetValue("Version").ToString();
var servicePack = subKey.GetValue("SP").ToString();

8
const string name = @ "सॉफ़्टवेयर \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v3.5"; रजिस्ट्रीकय उपकेई = रजिस्ट्री.लोकमाचाइन.पेनसुबके (नाम); var संस्करण = subKey.GetValue ("संस्करण")। ToString (); var servicePack = subKey.GetValue ("SP")। ToString ();
क्रिस क्राफ्ट

2
मेरी मशीन पर, Versionहै 3.5.30729.5420और SPहै1
केविन स्मिथ

2
कमांड लाइन पर: reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" /V Version reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" /V SP
केविन स्माइथ

एक समस्या होगी: यदि किसी उपयोगकर्ता के पास .NET इंस्‍टॉल नहीं है, तो .NET इंस्‍टॉल होने पर पता लगाने के लिए .NET रन के साथ आपका प्रोग्राम कैसे लिखा जाता है?
zwcloud

27

आप सर्वर से IE का उपयोग करके SmallestDotNet पर जा सकते हैं । यदि आप पुराने हैं तो आपको संस्करण बताएंगे और डाउनलोड लिंक भी देंगे।


4
केवल आपको उच्चतम संस्करण बताता है, उदाहरण के लिए, यदि आपके पास 4 है, तो यह आपको नहीं बताएगा कि क्या आपके पास 3.5 sp 1 है
codeulike

12

दूरस्थ डेस्कटॉप या रजिस्ट्री तक पहुंच के बिना सर्वर पर स्थापित फ्रेमवर्क संस्करणों का पता लगाने का तरीका जानने की कोशिश करते हुए मैं इस पृष्ठ पर आया, इसलिए डैनी वी के जवाब ने मेरे लिए काम किया।

string path = System.Environment.SystemDirectory;
path = path.Substring( 0, path.LastIndexOf('\\') );
path = Path.Combine( path, "Microsoft.NET" );
// C:\WINDOWS\Microsoft.NET\

string[] versions = new string[]{
    "Framework\\v1.0.3705",
    "Framework64\\v1.0.3705",
    "Framework\\v1.1.4322",
    "Framework64\\v1.1.4322",
    "Framework\\v2.0.50727",
    "Framework64\\v2.0.50727",
    "Framework\\v3.0",
    "Framework64\\v3.0",
    "Framework\\v3.5",
    "Framework64\\v3.5",
    "Framework\\v3.5\\Microsoft .NET Framework 3.5 SP1",
    "Framework64\\v3.5\\Microsoft .NET Framework 3.5 SP1",
    "Framework\\v4.0",
    "Framework64\\v4.0"
};

foreach( string version in versions )
{
    string versionPath = Path.Combine( path, version );

    DirectoryInfo dir = new DirectoryInfo( versionPath );
    if( dir.Exists )
    {
        Response.Output.Write( "{0}<br/>", version );
    }
}

मेरे लिए उम्मीद के मुताबिक काम किया। बस एक नई वेबसाइट परियोजना बनाई, कोड जोड़ा और इसे शेयर पर डाल दिया, फिर पृष्ठ का अनुरोध किया।
क्रि वान डर मस्त

9

इस लेख पर एक नज़र डालें जो रजिस्ट्री कुंजियों को दिखाता है जिन्हें आपको देखने की आवश्यकता है। और यह आपके लिए ऐसा करने वाली .NET लाइब्रेरी प्रदान करता है।

सबसे पहले, आपको यह निर्धारित करना चाहिए कि .NET 3.5 HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v3.5 \ Install को देखकर स्थापित किया गया है, जो DWORD मान है। यदि वह मान मौजूद है और 1 पर सेट है, तो फ्रेमवर्क का वह संस्करण स्थापित है।

HKLM \ Software \ Microsoft \ NET फ्रेमवर्क सेटअप \ NDP \ v3.5 \ SP को देखें, जो एक DWORD मान है जो सर्विस पैक स्तर (जहाँ 0 कोई सर्विस पैक नहीं है) इंगित करता है।

चीजों के बारे में सही होने के लिए, आपको वास्तव में यह सुनिश्चित करने की आवश्यकता है कि .NET Fx 2.0 और .NET Fx 3.0 पहले स्थापित हैं और फिर देखें कि .NET 3.5 स्थापित है या नहीं। यदि तीनों सत्य हैं, तो आप सर्विस पैक स्तर की जांच कर सकते हैं।


1
लेख लिंक को बदल दिया गया है, यहाँ यह नया स्थान है: codeproject.com/KB/dotnet/frameworkversiondetection.aspx
ड्रेक

5

जाँच निम्न निर्देशिका मौजूद है:

64bit मशीनों में:% SYSTEMROOT% \ Microsoft.NET \ Framework64 \ v3.5 \ Microsoft .NET फ्रेमवर्क 3.5 SP1 \

32bit मशीनों में:% SYSTEMROOT% \ Microsoft.NET \ Framework \ v3.5 \ Microsoft .NET फ्रेमवर्क 3.5 SP1 \

जहाँ% SYSTEMROOT%, SYSTEMROOT एन्वीरोमेंटल वैरिएबल (जैसे C: \ Windows) है।


2

यह मानते हुए कि नाम हर जगह "Microsoft .NET फ्रेमवर्क 3.5 SP1" है, आप इसका उपयोग कर सकते हैं:

string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))
{
    return rk.GetSubKeyNames().Contains("Microsoft .NET Framework 3.5 SP1");
}

+1, प्रोग्रामेटिकली चेक करने के लिए अब तक का सबसे आसान तरीका अगर 3.5 SP1 स्थापित है - वास्तव में, अगर यह काम किया है। मैंने इसकी कोशिश की, यह मेरे लिए काम नहीं करता है, यह हमेशा गलत होता है।
इवगेनी बेरेकोवस्की

GetSubKeyNames () द्वारा लौटाए गए संग्रह के माध्यम से स्किमिंग, कुछ उत्पादों के लिए सादा पाठ नाम का उपयोग किया जाता है, जैसे - .net फ्रेमवर्क के रूप में, उत्पाद आईडी {1ea1f -...} का उपयोग किया जा रहा है। इसलिए यह नहीं पाया जा सकता है।
इवगेनी बेरेसोवस्की
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.