2009-04-02 38 views
6

Nhận Số sê-ri của ổ cứng Được cung cấp bởi nhà sản xuất thông qua PHP: Làm cách nào để hoàn thành? Tôi muốn lưu trữ nó trong một tập tin.Lấy Số sê-ri của Ổ đĩa cứng Được cung cấp bởi nhà sản xuất thông qua PHP

Hệ điều hành: Windows 2000, XP, ME, Vista ...

Có, tôi muốn số serial của ổ cứng của Server.

Hoặc nó có thể được thực hiện thông qua Adobe AIR không? Hoặc có thể thực hiện thông qua chương trình C trên Windows không?

C:\Documents and Settings\Administrator>dir 
Volume in drive C has no label. 
Volume Serial Number is BC16-5D5F 

Đây có phải là số: BC16-5d5f duy nhất cho ổ cứng? Nó khác với số sêri do nhà sản xuất cung cấp như thế nào?

wmic DISKDRIVE GET SerialNumber 

Hiển thị chỉ các văn bản sau đây trên máy Vista của tôi:

serialNumber

Trên máy XP của tôi, lệnh là không được công nhận.

+0

Lý do bạn không nhận được một câu trả lời là bởi vì ổ cứng cụ thể của bạn, hoặc không cung cấp hệ điều hành với các thông tin này hoặc bị hư hỏng. – OIS

Trả lời

0

Bạn có muốn ổ cứng từ máy chủ hoặc ứng dụng khách không? PHP chạy trên máy chủ để nhận được nó trực tiếp từ khách hàng doens't dường như có thể cho tôi.

Tài liệu hướng dẫn gợi ý bạn có thể thực hiện các lệnh trên bạn server: http://nl2.php.net/manual/en/ref.exec.php

Đáng tiếc là tôi không đủ Unix để giúp bạn có serial hdd.

2
hdparm -i /dev/sdX 

trên Linux, không chắc chắn trên cửa sổ. Bạn có thể thực hiện điều đó thông qua "hệ thống()"

Có một cái nhìn tại http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.hk.msdn.connection&tid=e41f0af2-2e76-4be6-9b7b-636e79ac0491&cat=zh_HK_3b03d742-993a-4f96-accd-1063c6bfd559&lang=zh&cr=HK&sloc=&p=1

Có thể là một con đường phía trước.

Ngoài ra, khi tôi chạy một "dir" trên cửa sổ lệnh, nó cho thấy:

C:\Documents and Settings\Administrator>dir 
Volume in drive C has no label. 
Volume Serial Number is BC16-5D5F 

Là những gì bạn đang tìm kiếm?

+0

Số sê-ri (tức là phân vùng) đó. – vartec

+0

Ồ, cảm ơn! Tôi sẽ ghi nhớ điều đó. –

+0

Đây có phải là số BC16-5d5f duy nhất cho ổ đĩa cứng không? Số này tạo ra BTW như thế nào và nó khác với số số sêri do nhà sản xuất cung cấp? – dharm0us

1

Tôi không thể cho bạn biết câu trả lời, nhưng tôi đoán bạn sẽ phải nhìn theo hướng mở rộng (thậm chí có thể tự mình viết). Tôi nghi ngờ đây là điều cốt lõi của PHP.

Edit: Tôi quên về sức mạnh thô của "exec": -/

5

PHP bản thân không có cách nào truy cập vào phần cứng như thế.

Bạn sẽ phải hoặc là

  • sử dụng một lệnh của hệ điều hành của bạn và gọi nó với system() hoặc exec()
  • viết một phần mở rộng cho PHP sẽ trả lại cho bạn những thông tin

Nếu bạn đang sử dụng Linux và có các đặc quyền và cấu hình cần thiết mà bạn có thể sử dụng $r = system("hdparm -I /dev/hda"); (thay thế hda bằng hd của bạn) để lấy số sêri của một ổ đĩa cứng đã cho.

+0

Để tránh truy cập root, chúng tôi cũng có 'ls/dev/disk/by-id /' xem [câu trả lời của tôi] (http://stackoverflow.com/a/26751810/881743);) –

8

Sau đây trả về số sêri đĩa. Nên làm việc với nhiều ổ đĩa, bạn sẽ chỉ nhận được nhiều kết quả. Chỉ cần chạy nó với shell_exec.

wmic DISKDRIVE GET SerialNumber 

wmic.exe nằm trong thư mục system32 của cửa sổ. Và wmic không tồn tại trên WinXP, Ive đã sử dụng nó ở đó.

kết quả của tôi trên Vista:

C:\Windows\System32>wmic DISKDRIVE GET SerialNumber 
SerialNumber 
20202020202054534241354c4*snip* 

Tôi không biết nếu tất cả các ổ cứng cung cấp số serial cho hệ điều hành.

Dường như lệnh wmic chỉ có trên các phiên bản chuyên nghiệp của Windows XP, Windows Vista và Windows 7.

+0

Nghiên cứu của tôi kết luận rằng wmic là trên Windows XP Professional nhưng không phải Windows XP Home. Bạn đã có nó trên Trang chủ? Tôi đang tìm một cách để có được một số thông tin và tôi muốn sử dụng WMIC. – Dorothy

+0

không hoạt động cho tôi khi giành chiến thắng 7 64-bit –

+0

@coding_idiot Bản sao của Windows 7 Home Premium (64 bit) của tôi. Chỉ cần mở một cửa sổ CLI và gõ lệnh trên. – OIS

0

Bạn có thể sử dụng

$hdserial =`wmic DISKDRIVE GET SerialNumber 2>&1` 

hoặc

$hdserial =`wmic bios get serialnumber 2>&1` 

Sau đó, bạn có thể lặp lại nó.

Dựa trên gợi ý của Patrick Daryll Glandien, bạn có thể thực hiện sau trên các máy dựa trên * nix. $ hdserial = hdparm -I /dev/hda

hdparm -i /dev/sda trả về thông tin ít hơn. Nhưng như hdparm cần truy cập root, nó không chạy với php cho tôi.

Phần '2> & 1' được sử dụng từ suggestion here.

+0

Câu trả lời này đã được chấp nhận cho phần wmic [ở đây] (http://stackoverflow.com/questions/13797030/how-to-get-hard-disk-serial-number-with-php-on-localhost#comment18977745_13797030). – Lenin

+0

Điều này giống như câu trả lời của tôi, chỉ 3 năm sau ... Và lý do nó không được chấp nhận là poster câu hỏi hoặc không có lệnh wmic chính xác (vì anh ta không có chuyên môn) hoặc hdd không cho hệ điều hành số sê-ri. – OIS

+0

@OIS Bạn có ý nói rằng tôi vừa sao chép câu trả lời của bạn? – Lenin

0

Hãy thử mã này hoạt động bình thường.

<?php 
    function GetVolumeLabel($drive) { 
     // Try to grab the volume name 
     if (preg_match('#Volume Serial Number is (.*)\n#i', shell_exec('dir '.$drive.':'), $m)) { 
      $volname = ' ('.$m[1].')'; 
     } else { 
      $volname = ''; 
     } 
    return $volname; 
} 

$serial = str_replace("(","",str_replace(")","",GetVolumeLabel("c"))); 
echo $serial; 

?> 
0

Trên máy tính dựa trên * nix bạn cũng có thể sử dụng ls /dev/disk/by-id/hdparm phép nhu gốc (xem Patrick Daryll G. câu trả lời).

<?php 
exec($command.' 2>&1', $output); 
echo 'HDD: '.$output[0].'<br>'; 

$outputs = explode('_', $outputs[0]); 
$outputs = end($outputs); 
echo 'HDD-SN: '.$output.'<br>'; 

và bạn sẽ nhận được một cái gì đó giống như

HDD: ata-HGST_XXX1234567890XX_ABCD123456789X // <connection>-<hdd_model>_<hdd_sn> 
HDD-SN: ABCD123456789X // Your HDD Serial Number 
0

Run này sau với shell_exec (thử nghiệm trong command prompt nếu cần):

wmic path win32_physicalmedia get Tag,SerialNumber 

DISKDRIVE không nhận được sự nối tiếp thực tế số cho ổ đĩa của tôi cho thấy cắm vào thông qua một kênh IDE.ở trên dường như để có được số sê-ri thực tế cho tất cả các ổ đĩa của tôi. Thẻ cũng sẽ trả lại cho bạn loại ổ đĩa nào có thể hữu ích trong việc xác định các ổ đĩa khác nhau.

Ví dụ đầu ra:

SerialNumber  Tag 
WD-WX55D33JQNZ4 \\.\PHYSICALDRIVE4 
S1OKIJNH938475 \\.\PHYSICALDRIVE0 
WD-CV44HJ5L765Y \\.\PHYSICALDRIVE1 
WD-WX41D65SD1UU \\.\PHYSICALDRIVE2 
WD-WXB1SD3OIJHG \\.\PHYSICALDRIVE3 
       \\.\CDROM0 
Các vấn đề liên quan