.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.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
— 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.