.NET 3.5 SP1이 설치되었는지 어떻게 알 수 있습니까?


91

.NET 3.5가 설치된 서버에 SP1이 설치되었는지 어떻게 알 수 있습니까?

답변:


18

제어판에서 프로그램 추가 / 제거를 사용하십시오.


1
그림을 이동. 나중에, 난 당신의 질문에 "프로그램 적으로"요점을 놓친 줄 알았는데, 가이.
rp.

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 문자열 이름 = @ "SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v3.5"; RegistryKey subKey = Registry.LocalMachine.OpenSubKey (이름); var version = subKey.GetValue ( "Version"). ToString (); var servicePack = subKey.GetValue ( "SP"). ToString ();
Chris Craft

2
내 컴퓨터에서 Version입니다 3.5.30729.5420SP1
케빈 스미스

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
Kevin Smyth

문제가 있습니다. 사용자가 .NET을 설치하지 않은 경우 .NET으로 작성된 프로그램을 어떻게 실행 하여 .NET이 설치되었는지 감지합니까?
zwcloud

27

서버에서 IE를 사용하여 SmallestDotNet으로 이동할 수 있습니다. 그러면 버전이 표시되고 오래된 경우 다운로드 링크도 제공됩니다.


4
하지만 가장 높은 버전 만 알려줍니다. 예를 들어 4 개가있는 경우 3.5 sp 1도 있는지 여부를 알려주지 않습니다
codeulike

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

나를 위해 예상대로 일했습니다. 새 웹 사이트 프로젝트를 만들고 코드를 추가하고 공유에 넣은 다음 페이지를 요청했습니다.
Kris van der Mast

9

찾아야 하는 레지스트리 키를 보여주고이를 수행 할 .NET 라이브러리를 제공하는 이 기사 를 살펴보십시오.

먼저 DWORD 값인 HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Install을 확인하여 .NET 3.5가 설치되어 있는지 확인해야합니다. 해당 값이 있고 1로 설정되어 있으면 해당 버전의 Framework가 설치된 것입니다.

HKLM \ Software \ Microsoft \ NET Framework Setup \ 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

다음 디렉토리가 있는지 확인하십시오.

64 비트 컴퓨터 : % SYSTEMROOT % \ Microsoft.NET \ Framework64 \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \

32 비트 컴퓨터 : % SYSTEMROOT % \ Microsoft.NET \ Framework \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \

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


2

이름이 "Microsoft .NET Framework 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 프레임 워크와 같은 제품 ID {1ea1f -...}가 사용됩니다. 그것이 찾을 수없는 이유입니다.
에브 게니 베레조프스키
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.