Windows 8 Ve Windows 10 Fiziksel Disk Numaraları

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Bay_Y
Üye
Mesajlar: 114
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Windows 8 Ve Windows 10 Fiziksel Disk Numaraları

Mesaj gönderen Bay_Y » 04 Ara 2017 05:33

herkese merhabalar.

Birkaç gündür araştırıyorum ama düzgün çalışan bir kod bulamadım , ya çok eski yeni disk numaralarını okumuyor yada hiç çalışmıyor.
Delphi den Windows 8 veya Windows 10 a ait fiziksel disklerin seri numaralarını nasıl öğrenebilirim. (SSD disklerde var tabi)

ertank
Üye
Mesajlar: 1171
Kayıt: 11 Eyl 2015 11:45

Re: Windows 8 Ve Windows 10 Fiziksel Disk Numaraları

Mesaj gönderen ertank » 04 Ara 2017 05:36

Merhaba,

Aşağıdaki bağlantıdaki kabul edilmiş cevaba ait kodu denediniz mi?
https://stackoverflow.com/questions/520 ... ial-number

Kullanıcı avatarı
ihalilcoban
Üye
Mesajlar: 91
Kayıt: 10 Ara 2015 10:39

Re: Windows 8 Ve Windows 10 Fiziksel Disk Numaraları

Mesaj gönderen ihalilcoban » 04 Ara 2017 07:40

Windows 7,8,10 sistemlerinde denediğim ve sorunsuz çalışan kodla küçük bir örnek hazırladım. Umarım işine yarar.

http://s8.dosya.tc/server5/2tyx97/hddno.rar.html

ertank
Üye
Mesajlar: 1171
Kayıt: 11 Eyl 2015 11:45

Re: Windows 8 Ve Windows 10 Fiziksel Disk Numaraları

Mesaj gönderen ertank » 04 Ara 2017 11:17

Önerdiğim bağlantıyı test ettiğimde çalışmadığını gördüm. Sanırım son sürüm işletim sistemlerinde Windows Messaging Interface (WMI) kullanmak dışında HDD seri numarasını Admin yetkisi olmadan öğrenmek çok mümkün olmuyor.

Ekteki örnek @ihalilcoban örneği ile aynı. Sadece kolay kullanılabilir bir fonksiyon haline getirilmiş şekli. Birçok üretici Hexadecimal olarak yazar seri numaralarını. Kontrol eder iken fonksiyonun hexadecimal dönüştürülmüş hali ile kontrol etmekte fayda var.

Eğer fonksiyon boş değer çeviriyor ise seri numarası okunamamış demektir.

Parametre olarak geçilen değer bilgisayara bağlı sabit disk numaraları anlamına gelir. Bu yöntem RAID kurulu bilgisayarlarda RAID seri numarasını veya RAID sisteme bağlı ilk HDD seri numarasını çevirebilir.
Dosya ekleri
hdd fiziki seri no.7z
(6.19 KiB) 16 kere indirildi

Bay_Y
Üye
Mesajlar: 114
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: Windows 8 Ve Windows 10 Fiziksel Disk Numaraları

Mesaj gönderen Bay_Y » 05 Ara 2017 12:47

Ertan bey en üsteki onaylanmış cevabı çalıştırdığımda Windows 10 da hata almıştım.

Her ikinizede çok teşekkür ediyorum.
Hemen deneyerek bilgilendirme yapacağım.

Kolaylıklar dilerim.

Bay_Y
Üye
Mesajlar: 114
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: Windows 8 Ve Windows 10 Fiziksel Disk Numaraları

Mesaj gönderen Bay_Y » 05 Ara 2017 01:17

Öncelikle Halil beyin kodunu çalıştırdım bir uyarı veriyor integer değer dönüşümü ile ilgili ama asıl sorun SSD disk numarasını okuyamadı bilgisayarımda 2 disk takılı biri normal diğeri SSD ve Windows 10 kurulu normal diske ait seri numarasını okudu ama SSd olanı maalesef okuyamadı.

Ertan beyin göndermiş olduğu kod da gayet güzel çalışıyor onda da normal disk seri numarası geldi zaten tek bir edit var ve 2.disk için bir seçenek yok tüm disklere nasıl erişebiliriz. en önemlisi ssd diskin numarasını nasıl alabiliriz.

Teşekkürler.

ertank
Üye
Mesajlar: 1171
Kayıt: 11 Eyl 2015 11:45

Re: Windows 8 Ve Windows 10 Fiziksel Disk Numaraları

Mesaj gönderen ertank » 05 Ara 2017 01:50

Eğer örnek kod içine aşağıdaki fonksiyonu ekleyip

Kod: Tümünü seç

function GetAvailableDrives(): Word;
var
  Drives : set of 0..25;
  ADrive : Integer;
  dString : String;
begin
  Result := 0;
  Integer(Drives) := GetLogicalDrives();
  for ADrive := 3 to 25 do
  begin
    if ( ADrive in Drives) then
    begin
      dString := Chr( ADrive + ord( 'A')) + ':\';
      if GetDriveType( PChar( dString)) = DRIVE_FIXED then Inc(Result);
    end;
  end;
end;
Buton tıklamasını aşağıdaki şekilde günceller iseniz sanırım istediğinizi elde edersiniz.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  PhysicalDriveCount: Integer;
  I: Integer;
  TempString: string;
begin
  PhysicalDriveCount := GetAvailableDrives();
  Memo1.Lines.Add('Physical Drive count: ' + PhysicalDriveCount.ToString());

  for I := 0 to Pred(PhysicalDriveCount) do
  begin
    Memo1.Lines.Add(Format('SerialNumber(%d) Numerik: ', [I]) + GetHDDPhysicalSerialNumber(I));
    TempString := GetHDDPhysicalSerialNumber(I);
    if TempString <> EmptyStr then
    begin
      Memo1.Lines.Add(Format('SerialNumber(%d) Hexadecimal: ', [I]) + Format('%x', [StrToInt64(TempString)]));
    end;
  end;
end;

Kullanıcı avatarı
ihalilcoban
Üye
Mesajlar: 91
Kayıt: 10 Ara 2015 10:39

Re: Windows 8 Ve Windows 10 Fiziksel Disk Numaraları

Mesaj gönderen ihalilcoban » 05 Ara 2017 02:52

Ekteki araç işine yarar sanırım.
Dosya ekleri
magwmi55.rar
(347.14 KiB) 18 kere indirildi

Bay_Y
Üye
Mesajlar: 114
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: Windows 8 Ve Windows 10 Fiziksel Disk Numaraları

Mesaj gönderen Bay_Y » 05 Ara 2017 04:04

Öncelikle ilgi ve alakanıza teşekkür ediyorum. Çok uğraştırdım farkındayım özür diliyorum ama son durum aşağıdaki gibidir.

Bir hata veriyor derlerken .ToString değeri ile ilgili ..

http://dosya.co/s6kewx8514tn/Hata.jpg.html

Halil Bey ekteki program çok güzel kapsamlı baya bir parametre gösteriyor ama orda yine ikinci disk yok daha doğrusu ikinci diski nasıl göreceğiz.
yani orda seçili olan seçeneklere bastım ama hata veriyor sadece xp diskserial de bir numara var ama o eski disk e ait.

http://dosya.co/vhrbtsht1cz1/Hata2.jpg.html

Kullanıcı avatarı
ihalilcoban
Üye
Mesajlar: 91
Kayıt: 10 Ara 2015 10:39

Re: Windows 8 Ve Windows 10 Fiziksel Disk Numaraları

Mesaj gönderen ihalilcoban » 05 Ara 2017 04:13

Resim

Resimdeki şekilde denersen bütün diskleri görebilirsin

ertank
Üye
Mesajlar: 1171
Kayıt: 11 Eyl 2015 11:45

Re: Windows 8 Ve Windows 10 Fiziksel Disk Numaraları

Mesaj gönderen ertank » 05 Ara 2017 05:36

Bay_Y yazdı:
05 Ara 2017 04:04
Öncelikle ilgi ve alakanıza teşekkür ediyorum. Çok uğraştırdım farkındayım özür diliyorum ama son durum aşağıdaki gibidir.

Bir hata veriyor derlerken .ToString değeri ile ilgili ..
İlgili satırı aşağıdaki şekilde de kullanabilirsiniz

Kod: Tümünü seç

  Memo1.Lines.Add('Physical Drive count: ' + IntToStr(PhysicalDriveCount));

Bay_Y
Üye
Mesajlar: 114
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: Windows 8 Ve Windows 10 Fiziksel Disk Numaraları

Mesaj gönderen Bay_Y » 05 Ara 2017 10:18

Ertan bey aslinda bu şekilde kullandım aslında ama o zaman dediğim gibi sadece bir disk geliyor ve değerin integral dönüşümü ile ilgili hata veriyor bilgisayar başına geçince tam olarak hatayı ve ekrani paylasirim.

Teşekkürler ederim cevap için

Bay_Y
Üye
Mesajlar: 114
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: Windows 8 Ve Windows 10 Fiziksel Disk Numaraları

Mesaj gönderen Bay_Y » 05 Ara 2017 10:19

ihalilcoban yazdı:
05 Ara 2017 04:13
Resim

Resimdeki şekilde denersen bütün diskleri görebilirsin
ilk firsat buldugumda kontrol edecegim kusura bakmayın telefondan yazıyorum ama cevap için çok teşekkür ederim.

ertank
Üye
Mesajlar: 1171
Kayıt: 11 Eyl 2015 11:45

Re: Windows 8 Ve Windows 10 Fiziksel Disk Numaraları

Mesaj gönderen ertank » 06 Ara 2017 07:33

Bay_Y yazdı:
05 Ara 2017 10:18
Ertan bey aslinda bu şekilde kullandım aslında ama o zaman dediğim gibi sadece bir disk geliyor ve değerin integral dönüşümü ile ilgili hata veriyor bilgisayar başına geçince tam olarak hatayı ve ekrani paylasirim.

Teşekkürler ederim cevap için
Sistemde tek SSD üzerinde birden fazla mantıksal sürücü olabilir mi? Diğer bir deyişle SSD kapasitesini ikiye veya daha fazla parçaya bölerek C, D, E gibi sürücü harfi şeklinde kullanıyor olabilir misiniz?

Bay_Y
Üye
Mesajlar: 114
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: Windows 8 Ve Windows 10 Fiziksel Disk Numaraları

Mesaj gönderen Bay_Y » 06 Ara 2017 08:05

ihalilcoban yazdı:
05 Ara 2017 04:13
Resim

Resimdeki şekilde denersen bütün diskleri görebilirsin
Teşekkürler burası dediğin gibi seçildiğinde tek disk geliyor ama SSD olan geliyor o daha önce görünmüyordu. teşekkürler , ben detaylı inceleyeceğim.

Cevapla