2008-10-13 25 views

Odpowiedz

18

Użyj Dodaj/Usuń programy z Panelu sterowania.

+0

Go figure. Później pomyślałem, że przegapiłem "programowo" punkt do twojego pytania, Guy. –

132

Spójrz na HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\. Jednym z nich muszą być spełnione:

  • wartość w tym kluczu Version powinny być 3.5.30729.01
  • lub wartości w tym samym kluczu SP powinny być

W języku C# (zaczerpnięte z pierwszego komentarza), możesz zrobić coś wzdłuż tych linii:

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

nazwa ciągu stałego = @ "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(); –

+1

Na moim komputerze "Wersja" to "3.5.30729.5420", a "SP" to "1" –

+2

W wierszu poleceń: "zapytanie reg" HKLM \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v3.5 "/ V Version' 'zapytanie reg" HKLM \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v3.5 "/ V SP' –

27

Możesz przejść do SmallestDotNet używając IE z serwera. To powie ci wersję, a także zapewni link do pobierania, jeśli jesteś nieaktualny.

+3

Mówi tylko o najwyższej wersji, np. jeśli masz 4, to nie powie ci, czy masz także 3.5 sp 1 – codeulike

2

Zakładając, że nazwa jest wszędzie „Microsoft .NET Framework 3.5 SP1”, można użyć to:

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

+1, najprostszy sposób, aby programowo sprawdzić, czy 3.5 SP1 jest zainstalowany - w rzeczywistości, jeśli zadziałał. Próbowałem, to nie działa dla mnie, zawsze zwraca false. –

+0

Przeglądanie kolekcji zwróconej przez GetSubKeyNames(), nazwa zwykłego tekstu jest używana w przypadku niektórych produktów, dla niektórych - jak w przypadku frameworków .net, używane są identyfikatory produktu {1ea1f -...}. Dlatego nie można go znaleźć. –

9

Spójrz na tego article który pokazuje klucze rejestru trzeba szukać i dostarcza Biblioteka .NET, która zrobi to za Ciebie.

Najpierw należy ustalić, czy .NET 3.5 jest zainstalowany, patrząc na HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Install, która jest wartością DWORD. Jeśli ta wartość jest obecna i ustawiona na 1, zainstalowana jest ta wersja programu Framework.

Spójrz na HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ SP, która jest wartością DWORD wskazującą poziom dodatku Service Pack (gdzie 0 to nie dodatek Service Pack).

Aby mieć rację, należy upewnić się, że .NET Fx 2.0 i .NET Fx 3.0 są najpierw zainstalowane, a następnie sprawdzić, czy jest zainstalowany .NET 3.5. Jeśli wszystkie trzy są prawdziwe, możesz sprawdzić poziom dodatku Service Pack.

+1

łącze do artykułu zostało zmienione, tutaj jest nowa lokalizacja: http://www.codeproject.com/KB/dotnet/frameworkversiondetection.aspx – Drake

4

Sprawdź się następujący katalog istnieje:

W maszynach 64-bitowych: % SYSTEMROOT% \ Microsoft.NET \ Framework64 \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \

w maszynach 32-bitowych: % SYSTEMROOT% \ Microsoft.NET \ Framework \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \

Gdzie% SYSTEMROOT% jest zmienną środowiskową SYSTEMROOT (np. C: \ Windows).

12

Doszedłem do tej strony, próbując dowiedzieć się, jak wykryć wersje szkieletowe zainstalowane na serwerze bez dostępu do zdalnego pulpitu lub rejestru, więc odpowiedź Danny V była dla mnie odpowiednia.

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); 
    } 
} 
+0

Pracowałem zgodnie z oczekiwaniami. Właśnie utworzyłem nowy projekt strony internetowej, dodałem kod i umieściłem go w udziale, a następnie poprosiłem o stronę. – XIII

Powiązane problemy