.NET 3.5가 설치된 서버에 SP1이 설치되었는지 어떻게 알 수 있습니까?
답변:
보세요 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();
Version
입니다 3.5.30729.5420
및 SP
인1
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
서버에서 IE를 사용하여 SmallestDotNet으로 이동할 수 있습니다. 그러면 버전이 표시되고 오래된 경우 다운로드 링크도 제공됩니다.
원격 데스크톱이나 레지스트리에 액세스하지 않고 서버에 설치된 프레임 워크 버전을 감지하는 방법을 알아 내려고이 페이지에 왔기 때문에 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 );
}
}
찾아야 하는 레지스트리 키를 보여주고이를 수행 할 .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가 설치되어 있는지 확인해야합니다. 세 가지가 모두 참이면 서비스 팩 수준을 확인할 수 있습니다.
이름이 "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");
}