2009-09-13 54 views
6

Làm cách nào để nhận dạng duy nhất máy tính (mainboard) bằng C# (. Net/Mono, ứng dụng cục bộ)?Làm cách nào để nhận dạng duy nhất máy tính bằng C#?

Ấn bản. Chúng ta có thể xác định mainboard trong Net sử dụng một cái gì đó như thế này (xem Get Unique System Identifiers in C#):

using System.Management; 
... 
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_MotherboardDevice"); 
... 

Nhưng tiếc là Mono không hỗ trợ System.Management. Làm thế nào để làm điều đó dưới Mono cho Linux? - Tôi không biết :(

Trả lời

2

Làm thế nào về MAC address của card mạng?

+0

Có thể bạn đã đúng. Phương pháp phổ biến đơn giản cho Windows và Linux sử dụng Mono là lấy địa chỉ MAC của (các) card mạng. – macropas

+0

Chúng tôi sử dụng địa chỉ MAC của thẻ mạng (đầu tiên) (có thể có nhiều hơn một!) Và với vài trăm khách hàng, điều này thay đổi thường xuyên hơn chúng tôi nghĩ. Chúng tôi hiện đang tìm kiếm các giải pháp thay thế. – epalm

+0

tôi hoàn toàn không đồng ý, đánh dấu adddress có thể được giả mạo! – Smith

3

Hãy thử điều này:

http://carso-owen.blogspot.com/2007/02/how-to-get-my-motherboard-serial-number.html

Cá nhân tuy nhiên, tôi muốn đi với khó khăn số serial ổ đĩa Nếu một mainboard chết và được thay thế, máy tính đó không phải là. Nếu ổ đĩa HDD được thay thế, nó không quan trọng quá nhiều vì phần mềm nằm trên đó. , vì vậy bạn có thể muốn xem xét kết hợp các số sê-ri, tùy thuộc vào những gì bạn muốn.

+2

Cả mainboards và hệ điều hành của tôi đều có xu hướng sống lâu hơn. Ít nhất cho đến nay. Có những thứ được gọi là "sao lưu" cho phép một phần mềm OS + để tồn tại HDD chết :-) – Joey

+0

Với tôi điều duy nhất nhất định nghĩa một máy tính là HDD. Bạn lấy hdd sang mainboard khác. Bạn có nghĩ rằng máy tính của bạn là trống/với bo mạch chủ hdd mới hoặc máy tính có tất cả dữ liệu của bạn, hệ điều hành của bạn, v.v.? –

13

Viết hàm lấy một vài tham số phần cứng duy nhất làm đầu vào và tạo băm ra.

Ví dụ, Windows kích hoạt nhìn vào các đặc điểm phần cứng sau:

  • Display Adapter
  • SCSI Adaptor
  • IDE Adapter (có hiệu quả các bo mạch chủ)
  • Network Adapter (NIC) và MAC của nó Địa chỉ
  • Dãy lượng RAM (ví dụ: 0-64mb, 64-128mb, v.v.)
  • Bộ xử lý loại
  • Processor Serial Number
  • ổ cứng Device
  • ổ cứng Volume Serial Number (VSN)
  • CD-ROM/CD-RW/DVD-ROM

Bạn có thể chọn một vài trong số chúng để tạo mã nhận dạng máy tính duy nhất của bạn.

+5

Mặt khác, bạn có thể muốn giữ chúng riêng biệt. Điều đó sẽ cho phép ví dụ để đưa vào bộ nhớ nhiều hơn, và bạn có thể cho phép thay đổi miễn là chúng xảy ra cùng một lúc. – Guffa

+0

Ý tưởng tốt về tạo băm. –

1

Bạn thực tế có MotherboardID, CPUID, Đĩa Serial và địa chỉ MAC, từ trải nghiệm không có trong số đó là 100%.

số liệu thống kê của chúng tôi cho

  • đĩa nối tiếp là thiếu 0,1%
  • MAC là thiếu 1.3%
  • Bo mạch chủ ID là thiếu 30%
  • CPUID là thiếu 99%

0,04% của máy thử nghiệm mang lại không có thông tin, chúng tôi thậm chí không thể đọc tên máy tính. Có thể đây là một số loại PC ảo, HyperV hoặc VMWare, hoặc có thể chỉ bị khóa? Trong mọi trường hợp, thiết kế của bạn phải có khả năng đối phó với những trường hợp này.

Đĩa nối tiếp là đáng tin cậy nhất, nhưng dễ thay đổi, mac có thể thay đổi và tùy thuộc vào bộ lọc được áp dụng khi đọc nó có thể thay đổi nếu trình điều khiển thiết bị được thêm vào (hyperv, wireshark v.v.).

Bo mạch chủ và CPUID đôi khi trở về giá trị đó là không hợp lệ "NONE", "AAAA ..", "XXXX ..." vv

Bạn cũng nên lưu ý rằng các chức năng này có thể rất chậm chạp trong việc gọi số (họ có thể mất một vài giây ngay cả trên PC nhanh), do đó, có thể đáng để khởi động chúng trên chuỗi nền sớm nhất có thể, bạn lý tưởng không muốn chặn chúng.

Các vấn đề liên quan