2008-10-13 5 views

답변

18

제어판에서 프로그램 추가/제거를 사용하십시오. 이름이 "마이크로 소프트 .NET 프레임 워크 3.5 SP1은"모든 곳이라고 가정

+0

Go figure를 가지고 있는지 알려주지 않을 것이다. 나중에, 나는 당신의 질문에 "프로그램 적으로"요점을 놓친다고 생각했습니다, 가이. –

132

HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\을 살펴보십시오. 이들 중 하나는 충족되어야합니다

  • 해당 키의 Version 값은 C#에서 3.5.30729.01
  • 또는 같은 키의 SP 값이해야 1

을해야한다 (첫 번째 의견에서 가져옴) 다음 행을 따라 뭔가를 할 수 있습니다.

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 = @ "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

내 컴퓨터에서'Version'은'3.5.30729.5420'이고 SP는'1'입니다. –

+2

명령 줄에서 : 'reg query "HKLM \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v3.5"/ V 버전' 'reg query "HKLM \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v3.5"/ V SP' –

27

서버에서 IE를 사용하여 SmallestDotNet으로 이동할 수 있습니다. 그러면 버전이 알려지며 구식 인 경우 다운로드 링크도 제공됩니다.

+3

오직 가장 높은 버전을 알려줍니다. 네가 있다면, 3.5 sp 1 – codeulike

2

, 당신은이를 사용할 수 있습니다

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, 지금까지 프로그래밍 방식으로 3.5 SP1이 설치되어 있는지 확인하는 가장 쉬운 방법입니다. 나는 그것을 시도했다, 그것은 나를 위해 작동하지 않는다, 항상 false를 반환한다. –

+0

GetSubKeyNames()에 의해 반환 된 컬렉션을 감추고, 일부 제품에는 일반 텍스트 이름이 사용됩니다. 일부는 .net 프레임 워크와 마찬가지로 제품 ID {1ea1f -...}가 사용됩니다. 그래서 그것이 발견되지 않는 이유입니다. –

9

은 당신이 볼 필요가 레지스트리 키를 보여 주며를 제공하는이 article에서보세요 이 작업을 수행 할 .NET 라이브러리.

먼저 .NET 3.5가 HKEY_LOCAL_MACHINE \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Install (DWORD 값)을보고 설치되어 있는지 확인해야합니다. 이 값이 존재하고 1로 설정되면 해당 버전의 Framework가 설치됩니다.

서비스 팩 수준 (0은 서비스 팩 없음)을 나타내는 DWORD 값인 HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ SP를 확인하십시오.

사물에 대해 올바르게하려면 .NET Fx 2.0과 .NET Fx 3.0이 먼저 설치되었는지 확인한 다음 .NET 3.5가 설치되어 있는지 확인해야합니다. 세 가지 모두 해당되면 서비스 팩 수준을 확인할 수 있습니다.

+1

기사 링크가 변경되었습니다. 다음은 새로운 위치입니다. http://www.codeproject.com/KB/dotnet/frameworkversiondetection.aspx – Drake

4

확인은 다음 디렉토리가 존재한다 : 64 비트 시스템에서

: 여기서 % SystemRoot % \ Microsoft.NET \ Framework64 32 비트 시스템에서

\ 마이크로 소프트 .NET 프레임 워크 3.5 SP1 \ V3.5 \ % SYSTEMROOT %는 SYSTEMROOT 환경 변수 (예 : C : \ Windows)입니다. % SYSTEMROOT % \ Microsoft.NET \ Framework \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \

여기서 % SYSTEMROOT %는 SYSTEMROOT 환경 변수입니다 (예 : C : \ Windows).

12

원격 데스크톱이나 레지스트리에 액세스 할 수없는 서버에 설치된 프레임 워크 버전을 검색하는 방법을 알아 내려고하면서이 페이지를 보았습니다. Danny V의 대답이 저에게 효과적이었습니다.

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

예상대로 근무했습니다. 새 웹 사이트 프로젝트를 만들고 코드를 추가하고 공유에 넣은 다음 페이지를 요청했습니다. – XIII

관련 문제