Làm cách nào để biết SP1 đã được cài đặt trên máy chủ có .NET 3.5 chưa?
Câu trả lời:
Nhìn vào HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\
. Một trong những điều này phải đúng:
Version
giá trị trong quan trọng mà nên 3.5.30729.01SP
giá trị trong cùng một khóa phải là 1Trong C # (lấy từ nhận xét đầu tiên), bạn có thể làm điều gì đó dọc theo những dòng sau:
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
là 3.5.30729.5420
và SP
là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
Bạn có thể truy cập SmallestDotNet bằng IE từ máy chủ. Điều đó sẽ cho bạn biết phiên bản và cũng cung cấp liên kết tải xuống nếu bạn đã lỗi thời.
Tôi đến trang này khi đang cố gắng tìm cách phát hiện các phiên bản khung được cài đặt trên máy chủ mà không cần quyền truy cập vào máy tính để bàn hoặc sổ đăng ký từ xa, vì vậy câu trả lời của Danny V phù hợp với tôi.
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 );
}
}
Hãy xem bài viết này hiển thị các khóa đăng ký bạn cần tìm và cung cấp thư viện .NET sẽ thực hiện việc này cho bạn.
Trước tiên, bạn nên xác định xem .NET 3.5 có được cài đặt hay không bằng cách xem HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ Install, là giá trị DWORD. Nếu giá trị đó hiện diện và được đặt thành 1, thì phiên bản đó của Framework đã được cài đặt.
Nhìn vào HKLM \ Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5 \ SP, là giá trị DWORD cho biết mức Gói dịch vụ (trong đó 0 không phải là gói dịch vụ).
Để chính xác về mọi thứ, bạn thực sự cần đảm bảo rằng .NET Fx 2.0 và .NET Fx 3.0 đã được cài đặt trước, sau đó kiểm tra xem .NET 3.5 đã được cài đặt chưa. Nếu cả ba đều đúng, thì bạn có thể kiểm tra mức gói dịch vụ.
Kiểm tra xem thư mục sau có tồn tại không:
Trong máy 64bit:% SYSTEMROOT% \ Microsoft.NET \ Framework64 \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \
Trong máy 32bit:% SYSTEMROOT% \ Microsoft.NET \ Framework \ v3.5 \ Microsoft .NET Framework 3.5 SP1 \
Trong đó% SYSTEMROOT% là biến môi trường SYSTEMROOT (ví dụ: C: \ Windows).
Giả sử rằng tên ở khắp mọi nơi "Microsoft .NET Framework 3.5 SP1", bạn có thể sử dụng điều này:
string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))
{
return rk.GetSubKeyNames().Contains("Microsoft .NET Framework 3.5 SP1");
}