Flash bellek seri numarası...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Dostk
Üye
Mesajlar: 144
Kayıt: 22 Ağu 2015 12:21

Flash bellek seri numarası...

Mesaj gönderen Dostk »

Selam.

Forumda ve nette bir çok konu açışmış fakat hiç birinde sonuç yok;

Programı flash bellek içinde kullanıcıya vereceğim ve o flash dışında hiç bir ortamda programın çalışmasını istemiyorum, fakat flash belleğe format atıldığında seri gidiyor ve yeniden seri no üretiliyor.

Kısacası flash bellek seri numarası format atılsa da "değişmeyen" numarasını nasıl alabilirim...

Kod: Tümünü seç

procedure TForm1.HdClick(Sender: TObject);
  function GetVolumeSerialNumber: string;
  var
    NotUsed, VolFlags: DWORD;
    VolSN: DWORD;
    VolumeSerialNumber: string;
  begin
    SetCurrentDirectory(pChar(ExtractFilePath(Application.Exename)));
    GetVolumeInformation(Nil, Nil, 0, @VolSN, NotUsed, VolFlags, Nil, 0);
    VolumeSerialNumber := AnsiUpperCase(IntToHex(VolSN, 8));
    Result := VolumeSerialNumber;
  end;

begin
  Edit1.Text := GetVolumeSerialNumber;
end;

AfterPost
Üye
Mesajlar: 127
Kayıt: 12 Tem 2014 10:22

Re: Flash bellek seri numarası...

Mesaj gönderen AfterPost »

Flash in içine bir text dosyası oluştur.seri numarasını oraya kaydet ... format atılsa bile flashtan okur..

Kullanıcı avatarı
Dostk
Üye
Mesajlar: 144
Kayıt: 22 Ağu 2015 12:21

Re: Flash bellek seri numarası...

Mesaj gönderen Dostk »

İyi de bu seferde text format sırasında silinecek...

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4733
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: Flash bellek seri numarası...

Mesaj gönderen mrmarman »

Flash bellek anahtar niteliği kazansın istiyorsanız özel donanım dongle kullanmalısınız.
Basit yolla dileğiniz için şunu önerebilirim. Flash belleğe küçük 1 mb kadarlık bir partition oluşturup bunu pasif logical yaparsınız. Klasik yolla biçimlendirme yapıldığında sadece aktif partition biçimlenir, ayırdığınıza dokunulmaz.. Ancak partition magic gibi yazılımlar ile bu duruma müdahale edilebilir.
Neyi engeller, format atıldığında belirlediğiniz seri no korunur. Neyi engellemez bana verseler yazılımın kopyasını oluşturabilirim. Size ne sağlar. Kopya yazılım tespit edildiğinde dağıtımcıyı numaradan bulabilirsiniz.
Şimdi size bir araştırma konusu oldu.
Başarılar.
Resim Resim

Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Flash bellek seri numarası...

Mesaj gönderen SimaWB »

Ben WMI kullanarak flash belleğin seri numarasını okuyorum ve format atılsa da değişmiyor. Sadece bazı belleklerde bu seri no boş dönebiliyor.
Ayrıca HID olarak USB cihaza erişmeye çalışabilirsiniz(Hid.dll kullanarak). Bununla ilgili bu forumda ve internette örnek mevcut. Hid.dll kullanırsanız HidD_GetSerialNumberString komutu size seri numarasını döndürür.
There's no place like 127.0.0.1

Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 830
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: Flash bellek seri numarası...

Mesaj gönderen G.Arkas »

Dostk yazdı:Selam.

Forumda ve nette bir çok konu açışmış fakat hiç birinde sonuç yok;

Programı flash bellek içinde kullanıcıya vereceğim ve o flash dışında hiç bir ortamda programın çalışmasını istemiyorum, fakat flash belleğe format atıldığında seri gidiyor ve yeniden seri no üretiliyor.

Kısacası flash bellek seri numarası format atılsa da "değişmeyen" numarasını nasıl alabilirim...

Kod: Tümünü seç

procedure TForm1.HdClick(Sender: TObject);
  function GetVolumeSerialNumber: string;
  var
    NotUsed, VolFlags: DWORD;
    VolSN: DWORD;
    VolumeSerialNumber: string;
  begin
    SetCurrentDirectory(pChar(ExtractFilePath(Application.Exename)));
    GetVolumeInformation(Nil, Nil, 0, @VolSN, NotUsed, VolFlags, Nil, 0);
    VolumeSerialNumber := AnsiUpperCase(IntToHex(VolSN, 8));
    Result := VolumeSerialNumber;
  end;

begin
  Edit1.Text := GetVolumeSerialNumber;
end;
Burada bir yanlışlık var sanki. Programı Flash bellekten execute etmek mantıklı değil. Flash belleğin yazma ve okuma hızına göre oldukça yavaş çalışacaktır uygulama. Uygulamayı bilgisayara kurup lisans yönetimini flash bellekten okutmak gerekiyor. Zaten bu işlem böyle olmalı. Uygulama açılırken dongle dan lisans kontrolü yapmalı.
Resim

Cevapla