Làm cách nào để biết liệu .NET 3.5 SP1 đã được cài đặt chưa?


91

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:


18

Sử dụng Thêm / Loại bỏ chương trình từ Bảng Điều khiển.


1
Đi tìm hình. Sau đó, tôi nghĩ rằng tôi đã bỏ lỡ một điểm "theo chương trình" cho câu hỏi của bạn, Guy.
rp.

135

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:

  • Các Versiongiá trị trong quan trọng mà nên 3.5.30729.01
  • Hoặc SPgiá trị trong cùng một khóa phải là 1

Trong 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();

8
const string name = @ "SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v3.5"; RegistryKey subKey = Registry.LocalMachine.OpenSubKey (tên); var version = subKey.GetValue ("Phiên bản"). ToString (); var servicePack = subKey.GetValue ("SP"). ToString ();
Chris Craft

2
Trên máy tính của tôi, Version3.5.30729.5420SP1
Kevin Smyth

2
Trên dòng lệnh: 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

Sẽ có một vấn đề xảy ra: nếu người dùng chưa cài đặt .NET, làm cách nào để chương trình của bạn được viết bằng .NET chạy để phát hiện xem .NET đã được cài đặt hay chưa?
zwcloud

27

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.


4
Chỉ cho bạn biết phiên bản cao nhất tuy nhiên, ví dụ như nếu bạn có 4, nó sẽ không cho bạn biết liệu bạn cũng có 3,5 sp 1
codeulike

12

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

Làm việc như mong đợi đối với tôi. Chỉ cần tạo một dự án trang web mới, thêm mã và đưa nó lên chia sẻ, sau đó yêu cầu trang.
Kris van der Mast

9

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


1
liên kết bài viết đã được thay đổi, đây là vị trí mới: codeproject.com/KB/dotnet/frameworkversiondetection.aspx
Drake

5

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


2

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

+1, cách dễ nhất cho đến nay để kiểm tra theo chương trình xem 3.5 SP1 đã được cài đặt chưa - trên thực tế, nếu nó hoạt động. Tôi đã thử nó, nó không hiệu quả với tôi, nó luôn trả về false.
Evgeniy Berezovsky,

Lướt qua bộ sưu tập được trả về bởi GetSubKeyNames (), tên văn bản thuần túy được sử dụng cho một số sản phẩm, đối với một số sản phẩm - như khung .net, id sản phẩm {1ea1f -...} đang được sử dụng. Đó là lý do tại sao nó không thể được tìm thấy.
Evgeniy Berezovsky,
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.