- VisualStudio2022
- pprof-Hướng dẫn sử dụng nó trong bản mạng trực tiếp
- Triển khai C# các loại hộp chọn nhiều màu lựa chọn thả xuống, cây lựa chọn nhiều màu lựa chọn thả xuống và các nút tối đa
- [Ghi chú học tập] Cơ sở dữ liệu cấu trúc: cat tree
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ủ).
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.
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! .
Tôi không thể sử dụng chown. Bilals-MBP:~ $ sudo mkdir -p /data/db Mật khẩu: mkdir: /data/db: Hệ thống tệp chỉ đọc
Tôi đang bị mắc kẹt trong một vấn đề rất đơn giản. Tôi đang cố gắng tạo một ứng dụng GUI Qt để điều khiển Arduino của mình từ GUI (thay vì điều khiển nó từ màn hình nối tiếp của Arduino IDE). Tôi có thể sử dụng QSerialPort write(
Tôi đang cố mở cổng COM bằng chức năng CreateFile của Win32. Tôi đã đọc tài liệu trên MSDN cũng như một số diễn đàn về cách thực hiện việc này, nhưng dù có làm gì tôi vẫn nhận được mã lỗi số 2 (Cổng không tồn tại
Tôi đang cố gắng sử dụng lệnh gọi hệ thống read() và write(). Chương trình sau đây tạo một tệp và ghi một số dữ liệu vào đó. Đây là mã.. int main() { int fd open("stud
Tôi hơi mới với Xcode và sqlite. Bây giờ tôi có một tệp cơ sở dữ liệu tên là "mydb.db" đã có sẵn một số bảng và dữ liệu. Tôi đã đặt nó vào thư mục mac của mình và kéo nó vào dự án Xcode trong phần "Tệp hỗ trợ".
Thông tin cơ bản: Chuyển sang phần câu hỏi nếu cần. Tôi đang làm việc trên giao diện người dùng cho thiết bị thử nghiệm. Mục đích của giao diện người dùng là giúp việc viết các kịch bản kiểm thử dài dễ dàng hơn. Khá nhiều thứ chỉ làm cho chúng dễ đọc và dễ ghi hơn. Thiết bị sẽ sử dụng Bộ điều khiển Prologix GPIB-USB
Các ví dụ trong bài viết này mô tả các thao tác phổ biến trên tệp Python. Share cho mọi người tham khảo nhé, chi tiết như sau: 1. File là gì? Tệp là tập hợp dữ liệu hoặc thông tin được lưu trữ trên phương tiện bên ngoài, chẳng hạn như chương trình nguồn trong chương trình, dữ liệu được lưu trong dữ liệu, dữ liệu pixel trong tệp hình ảnh, v.v.;
Các mẫu C++ 0x chỉ định quyền truy cập nguyên tử an toàn theo luồng std::atomic vào các biến. Bản mẫu này có hàm thành viên std::atomic::exchange lưu trữ nguyên tử một giá trị mới trong "this" và truy xuất giá trị hiện có của "this". W
Có cách nào trong VBA để đọc và ghi tệp INI không? Tôi biết tôi có thể sử dụng; Mở "C:\test.ini" cho đầu vào là số 1 ... và phân tích dữ liệu. Thay vào đó, tôi cố gắng xem những công cụ nào đã có sẵn. TÔI
Gần đây tôi đã thấy một ví dụ về thiết kế hệ thống trên kho lưu trữ GitHub system-design-primer, hiển thị API đọc/ghi. Tôi đang cố gắng triển khai cái này để thực hành. Đề cương là thế này. Nó tách API đọc và ghi
Tôi gặp sự cố khi sử dụng trường dmColor của cấu trúc DEVMODE. Máy in mặc định của tôi là máy in màu và nếu tôi đặt đầu ra màu mặc định của thuộc tính máy in thành đen trắng thông qua bảng điều khiển thì trường DEVMODE.dmColor luôn trả về D
Tôi biết cách các ổ cắm, v.v. hoạt động với java/android, nhưng làm cách nào để kết nối với cổng COM trên máy tính để bàn của tôi bằng java hoặc python? Bạn có muốn sử dụng một địa chỉ? Hoặc tìm hiểu xem cổng bạn muốn có sẵn hay không? Tôi không biết phải làm gì
Điều gì tạo nên một lượt đọc thực tế trong DynamoDB? Nó có đọc mọi hàng trong bảng hoặc trả về một số dữ liệu không? Đây là lý do tại sao việc quét lại tốn kém đến vậy - bạn có đọc toàn bộ bảng và trả tiền cho mỗi hàng trong bảng bạn đọc không? ElasticCache có thể (Tôi
Tôi muốn viết một chương trình bằng Java để kiểm tra xem src có tồn tại hay không (không ném FileNoot) và sao chép nội dung của src.txt sang des.txt và in kích thước của cả hai tệp ở đầu và cuối. đang ở trong
Tôi có một mảng float trong C++ và tôi muốn lưu nó vào tệp nhị phân (để tiết kiệm dung lượng) để tôi có thể đọc lại sau. Để làm điều này, tôi đã viết đoạn mã sau để viết mảng: float *zbuffer = new float
Tôi đang cố gắng tạo chức năng Đọc\Viết cho websocket, nhưng tôi đang gặp sự cố... var inarrivo = 0; var risposta = "";
Trong ứng dụng được viết bằng Qt, tôi có QGraphicsScene. Trong QgraphicsScene này có một hình ảnh và một số mục do người dùng vẽ. Tôi muốn lưu QgraphicsSc này với tất cả nội dung
Tôi đang viết một chương trình được cho là chạy vô thời hạn và giữ nguyên giá trị của một biến. Hai chương trình còn lại có thể thay đổi giá trị của biến. Tôi sử dụng các đường dẫn có tên để nhận các giá trị thay đổi và gửi chúng đến một chương trình bên ngoài. Đây là mã quản lý biến của tôi. người quản lý.c: #include
Tôi đã nói chuyện với một giáo viên và anh ấy nói với tôi rằng các lệnh gọi hệ thống đọc và ghi sử dụng bộ đệm vì trong thông số hệ thống của bạn có một biến kiểm soát số lần bạn có thể truy cập vào thiết bị bạn muốn đọc/ghi và hệ thống chờ đợi nó để ghi trong khi anh ấy đang sử dụng bộ đệm để lưu trữ dữ liệu khi vào thiết bị. Tôi đang ở một ngăn xếp khác
Mình chạy một phương thức có 3 phần, phần 1 và phần 3 đều là "đọc file văn bản", phần 2 là lưu chuỗi vào file văn bản, // The Save Path là Path của file văn bản, u
Tôi là một lập trình viên xuất sắc, rất xuất sắc!