cuốn sách gpt4 ai đã làm

Đọc và ghi dữ liệu liên quan đến .NETBios

In lại Tác giả: Sahara Thời gian cập nhật: 28-12-2024 22:40:57 58 4
mua khóa gpt4 Nike

Trong bài viết này chúng tôi giới thiệu cách đọc ghi dữ liệu cho Bios như cách đọc ghi SN thông dụng nhất.

Trong quy trình sản xuất thiết bị truyền thống tại nhà máy như PC, việc khởi tạo dữ liệu như SN, kiểu thiết bị, v.v. cần phải được hoàn thành, sau đó dây chuyền lắp ráp thử nghiệm tại nhà máy được xác minh bằng phần mềm kiểm tra tại nhà máy.

Ngoài ra còn có một số dữ liệu cần được lưu trữ trong BIOS, ví dụ: một số mã kích hoạt ngoại tuyến phần mềm chắc chắn không phù hợp để đặt trên đĩa. Nếu bạn thay đổi mã kích hoạt ổ cứng, nó sẽ biến mất. , dữ liệu có thể được lưu trữ và sao lưu trong BIOS (Lưu ý: Tốt nhất nên lưu trữ cả đĩa và BIOS và có thể kích hoạt lại sau khi thay thế đĩa cứng hoặc bo mạch chủ).

Truy vấn WMI

Trước tiên chúng ta hãy xem phương pháp WMI, phương pháp này có thể được sử dụng để truy vấn và quản lý nhiều thông tin khác nhau trên hệ thống Windows, bao gồm cả việc đọc thông tin BIOS.

WMI-Win32_BIOS, bạn có thể kiểm tra phiên bản Bios, nhà sản xuất, Bios Sn, v.v.:

 1             var người tìm kiếm = mới ManagementObjectSearcher("CHỌN * TỪ Win32_BIOS");
 2             Console.WriteLine("Win32_BIOS Lấy thông tin bios:");
 3             giảng dạy (var đối tượng cơ sở TRONG người tìm kiếm.Get())
 4             {
 5                 Console.WriteLine("Nhà sản xuất: " + đối tượng cơ sở["nhà sản xuất"]);
 6                 Console.WriteLine("Phiên bản: " + đối tượng cơ sở["Phiên bản"]);
 7                 Console.WriteLine("Phiên bản BIOS SMBIOS: " + đối tượng cơ sở["SMBIOSBIOSPhiên bản"]);
 8                 Console.WriteLine("Tên: " + đối tượng cơ sở["Tên"]);
 9                 Console.WriteLine("Ngày phát hành: " + đối tượng cơ sở["Ngày phát hành"]);
10                 Console.WriteLine("Số seri: " + đối tượng cơ sở["Số seri"]);
11                 Console.WriteLine("Trạng thái: " + đối tượng cơ sở["Trạng thái"]);
12                 Console.WriteLine("Đầu đề: " + đối tượng cơ sở["Đầu đề"]);
13                 Console.WriteLine("Số bản dựng: " + đối tượng cơ sở["Số bản dựng"]);
14                 Console.WriteLine("Bộ mã: " + đối tượng cơ sở["Bộ mã"]);
15                 Console.WriteLine("Ngôn ngữ hiện tại: " + đối tượng cơ sở["Ngôn ngữ hiện tại"]);
16                 Console.WriteLine("Sự miêu tả: " + đối tượng cơ sở["Sự miêu tả"]);
17                 Console.WriteLine("Bộ điều khiển nhúng Phiên bản chính: " + đối tượng cơ sở["EmbeddedControllerMajorPhiên bản"]);
18                 Console.WriteLine("Phiên bản nhỏ của bộ điều khiển nhúng: " + đối tượng cơ sở["EmbeddedControllerMinorPhiên bản"]);
19                 Console.WriteLine("Mã nhận dạng: " + đối tượng cơ sở["Mã nhận dạng"]);
20                 Console.WriteLine("Ngôn ngữ có thể cài đặt: " + đối tượng cơ sở["Ngôn ngữ có thể cài đặt"]);
hai màu sắc                 Console.WriteLine("Ngày cài đặt: " + đối tượng cơ sở["Ngày cài đặt"]);
hai mươi hai                 Console.WriteLine("Phiên bản ngôn ngữ: " + đối tượng cơ sở["Phiên bản ngôn ngữ"]);
hai mươi ba                 Console.WriteLine("Danh sách ngôn ngữ: " + đối tượng cơ sở["Danh sách Ngôn ngữ"]);
hai bốn bốn                 Console.WriteLine("Hệ điều hành mục tiêu khác: " + đối tượng cơ sở["TargetOS khác"]);
25                 Console.WriteLine("BIOS chính: " + đối tượng cơ sở["BIOS chính"]);
26                 Console.WriteLine("Phiên bản chính của BIOS hệ thống: " + đối tượng cơ sở["SystemBiosMajorPhiên bản"]);
27                 Console.WriteLine("Phiên bản nhỏ của BIOS hệ thống: " + đối tượng cơ sở["SystemBiosMinorPhiên bản"]);
28                 Console.WriteLine("Hệ điều hành mục tiêu: " + đối tượng cơ sở["Mục tiêuHệ điều hành"]);29             }
30             người tìm kiếm.Dispose();

Bạn cũng có thể sử dụng PowerShell trực tiếp: Get-WmiObject -Class Win32_BIOS. Sau đây là thông tin tham số chính.

  • SMBIOSBIOSVersion: số phiên bản BIOS.

  • Nhà sản xuất: nhà sản xuất BIOS.

  • Tên: Tên BIOS.

  • Ngày phát hành: Ngày BIOS được phát hành.

  • SerialNumber: Số serial của hệ thống.

  • Phiên bản: Phiên bản BIOS.

Đây là kết quả mà PC thu được:

Thông tin phiên bản Bios trong Computer-System Information hiển thị như nhà sản xuất Bios + phiên bản Bios + ngày phát hành ở trên:

WMI-Win32_BaseBoard, bạn có thể lấy SN bo mạch chủ và nhà sản xuất bo mạch chủ:

 1             var người tìm kiếm1 = mới ManagementObjectSearcher("CHỌN * TỪ Win32_BaseBoard");
 2             Console.WriteLine("Win32_BaseBoard lấy thông tin bios:");
 3             giảng dạy (var đối tượng cơ sở TRONG người tìm kiếm1.Get())
 4             {
 5                 Console.WriteLine("Số Serial của bảng: " + đối tượng cơ sở["Số seri"]);
 6                 Console.WriteLine("Nhà sản xuất: " + đối tượng cơ sở["nhà sản xuất"]);
 7                 Console.WriteLine("Tên sản phẩm: " + đối tượng cơ sở["Sản phẩm"]);
 8                 Console.WriteLine("Phiên bản: " + đối tượng cơ sở["Phiên bản"]);
 9             }
10             searcher1.Dispose();

Bạn cũng có thể sử dụng PowerShell để xem, Get-WmiObject -Class Win32_BaseBoard.

Nhận kết quả trên PC:

Ngoài ra, bạn cũng có thể sử dụng công cụ dòng lệnh, wmic bios get name, serialnumber, version để lấy thông tin BIOS cơ bản.

Ami đọc và viết

Bạn cũng có thể sử dụng công cụ AmiWin để lấy thông tin Bios và công cụ này cũng có thể được sử dụng để ghi dữ liệu. Thông qua công cụ này, bạn có thể dễ dàng tùy chỉnh UUID hệ thống và điều chỉnh thông tin DMI để đáp ứng các yêu cầu hệ thống cụ thể khác nhau, chẳng hạn như chỉ định dữ liệu vị trí BIOS. Việc triển khai kỹ thuật của nó chủ yếu dựa vào quyền truy cập cơ bản và sửa đổi phần sụn BIOS.

AMI, tên đầy đủ của American Megatrends Inc., nổi tiếng với các giải pháp phần mềm BIOS/UEFI.

Đọc dữ liệu vị trí được chỉ định:

 1     Riêng tư tĩnh sợi dây ĐọcBiosData(sợi dây yêu cầu)
 2     {
 3         var amiExePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "AmiBios", "AMIDEWINx64.EXE");
 4         var thông tin bắt đầu = mới Thông tin quy trình bắt đầu
 5         {
 6             Tên tệp = $"\"{amiExePath}\"",
 7             Đối số= yêu cầu,
 8             Động từ = "runa",
 9             Sử dụngShellExecute= SAI,
10             Chuyển hướngStandardError = ĐÚNG VẬY,
11             Chuyển hướngĐầu vào tiêu chuẩn = ĐÚNG VẬY,
12             Chuyển hướngStandardOutput = ĐÚNG VẬY,
13             CreateNoWindow = ĐÚNG VẬY,
14             Kiểu cửa sổ = ProcessWindowStyle.Hidden
15         };
16         sử dụng var quá trình= Process.Start(startInfo);
17         if if (quá trình == vô giá trị) trở lại "";
18         quá trình.WaitForExit();
19         sợi dây đầu ra = process.StandardOutput.ReadToEnd();
20 
hai màu sắc         if if (sợi dây.IsNullOrWhiteSpace (đầu ra)) trở lại "Đọc kết quả đầu ra trống";
hai mươi hai         sợi dây[] đầu vào = đầu ra.Split(mới[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
hai mươi ba         sợi dây targetOutput = input.FirstOrDefault(p => p.Contains(lệnh));
hai bốn bốn         if if (đầu ra mục tiêu == vô giá trị) trở lại $"Dữ liệu đầu ra:{output}Không tìm thấy đầu ra mục tiêu của Khóa [{lệnh}] được chỉ định";
25         sợi dây value = ExtractMiddleContent(targetOutput, "\"", "\"");
26         trở lại giá trị;
27     }
28     Riêng tư tĩnh sợi dây ExtractMiddleContent(sợi dây nguồn, sợi dây bắt đầu, sợi dây kết thúc)
29     {
30         var rg = mới Regex("(?<=(" + bắt đầu + "))[.\\s\\S]*?(?=(" + kết thúc + "))", RegexOptions.Multiline | RegexOptions.Singleline);
31         trở lại rg.Match(source).Value;
32     }

Ghi dữ liệu vào vị trí được chỉ định:

 1     Riêng tư tĩnh sợi dây WriteBiosData(sợi dây yêu cầu, sợi dây dữ liệu)
 2     {
 3         var amiExePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "AmiBios", "AMIDEWINx64.EXE");
 4         var tranh luận = $"{lệnh} \"{dữ liệu}\"";
 5         var thông tin bắt đầu = mới Thông tin quy trình bắt đầu
 6         {
 7             Tên tệp = $"\"{amiExePath}\"",
 8             Đối số= tranh luận,
 9             Động từ = "runa",
10             Sử dụngShellExecute= SAI,
11             Chuyển hướngStandardError = ĐÚNG VẬY,
12             Chuyển hướngĐầu vào tiêu chuẩn = ĐÚNG VẬY,
13             Chuyển hướngStandardOutput = ĐÚNG VẬY,
14             CreateNoWindow = ĐÚNG VẬY,
15             Kiểu cửa sổ = ProcessWindowStyle.Hidden
16         };
17         sử dụng var quá trình= Process.Start(startInfo);
18         if if (quá trình == vô giá trị) trở lại "";
19         quá trình.WaitForExit();
20         sợi dây đầu ra = process.StandardOutput.ReadToEnd();
hai màu sắc         if if (sợi dây.IsNullOrWhiteSpace (đầu ra)) trở lại "Ghi kết quả đầu ra trống";
hai mươi hai         sợi dây[] đầu vào = đầu ra.Split(mới[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
hai mươi ba         sợi dây targetOutput = input.FirstOrDefault(p => p.Contains(lệnh));
hai bốn bốn         if if (đầu ra mục tiêu == vô giá trị) trở lại $"Dữ liệu đầu ra:{output}Không tìm thấy đầu ra đích của lệnh đã chỉ định [{command}]";
25         trở lại "thành công";
26     }

Hãy sử dụng AMI để kiểm tra việc đọc và ghi vào vị trí /BS:

 1     Riêng tư trống rỗng AmiReadButton_OnClick(vật thể người gửi, RoutedEventArgs e)
 2     {
 3         var boardSn = ReadBiosData("/BS");
 4         Console.WriteLine($"Đọc/BS:{boardSn}");
 5 
 6         var kết quả = WriteBiosData("/BS", "BÀI KIỂM TRA");
 7         Console.WriteLine($"Viết/BS:{kết quả}");
 8         var boardSnNew = ReadBiosData("/BS");
 9         Console.WriteLine($"Đọc/BS:{boardSnNew}");
10     }

Xem kho chứa bản Demo ở trên: https://github.com/kybs00/BiosDataDemo.

Điều đáng nói là ghi dữ liệu Bios là một thao tác có độ rủi ro cao và bạn phải tránh tình trạng mất điện trong quá trình thao tác, nếu không có thể gây ra một loạt vấn đề khởi động do file BIOS không chính xác.

  .

Bài viết tham khảo:

AMIDEWINx64 v5.27: Một công cụ mạnh mẽ để sửa đổi BIOS và chỉnh sửa DMI - Blog CSDN.

Cuối cùng, bài viết về đọc và ghi dữ liệu liên quan đến .NETBios kết thúc tại đây. Nếu bạn muốn biết thêm về việc đọc và ghi dữ liệu liên quan đến .NETBios, vui lòng tìm kiếm các bài viết về CFSDN hoặc tiếp tục duyệt các bài viết liên quan. blog tương lai! .

58 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress