Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Power Onguard ile makine kodu alma
#1
Power Onguard Kullanarak aşağıdaki foksiyon ile makine kodunu alıyorum.
Sorunun bilgisayara 2. , 3. bir hdd takıldığında (bu usb taşınabilir disk olabilir)
midDrives opsiyonu farklı numaralar üretiyor. 
bunun bir hata olmadığı biliyorum.
midDrives opsiyonuna sadece programın kurulu olduğu disk için numara verdirebilir miyiz.



 

function makina_kodu:Longint; export;
begin
Expires := 0;
MachineKey := Key;
MachineModifier := ABS(CreateMachineID([midUser, midSystem, {midNetwork,} midDrives]));
ApplyModifierToKeyPrim(MachineModifier,MachineKey,sizeof(MachineKey));
RegistrationFile := inttostr(MachineModifier)+'.lsn';
result := MachineModifier// MachineModifier;
end;
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#2
Video 
ogutil.pas içerisinde aşağıdaki tanım var. 

 if (GetDriveType(PChar(Drive + ':\')) = DRIVE_FIXED) then begin

DRIVE_FIXED tanımıda WinApi.Windows içarisinde şu şekilde tanımlanmış

const
 DRIVE_UNKNOWN = 0;
 {$EXTERNALSYM DRIVE_UNKNOWN}
 DRIVE_NO_ROOT_DIR = 1;
 {$EXTERNALSYM DRIVE_NO_ROOT_DIR}
 DRIVE_REMOVABLE = 2;
 {$EXTERNALSYM DRIVE_REMOVABLE}
 DRIVE_FIXED = 3;
 {$EXTERNALSYM DRIVE_FIXED}
 DRIVE_REMOTE = 4;
 {$EXTERNALSYM DRIVE_REMOTE}
 DRIVE_CDROM = 5;
 {$EXTERNALSYM DRIVE_CDROM}
 DRIVE_RAMDISK = 6;
 {$EXTERNALSYM DRIVE_RAMDISK}

Buna göre harici takılan belleklerin hesaba katılmaması gerekiyor.


ogutil.pas içeriğinden bir kısım

  if midDrives in MachineInfo then begin
   {include drive specific information}
   {$IFDEF FPC}
   maxController := 15;
   if Win32Platform <> VER_PLATFORM_WIN32_NT then
     maxController := 0;
   for iController := 0 to maxController do
   begin
     for iDrive := 0 to 4 do
     begin
       BufStr := '';
       if GetIdeDiskSerialNumber(iController,iDrive,BufStr) then
          if BufStr<>'' then UpdateTMD(Context, BufStr[1], 5);
     end;
   end;
   {$ELSE}
   for Drive := 'C' to 'Z' do begin // Ekleme veya buradaki döngü sadece C ile sınırlı olabilir

     if (GetDriveType(PChar(Drive + ':\')) = DRIVE_FIXED) then begin // Sabit diskler hesaba katılıyor
       // detect SUBST drives and ignore - see ticket #8                        {!!.15}
       device[0] := AnsiChar(Drive);                                            {!!.15}
       device[1] := ':';                                                        {!!.15}
       device[2] := #0;                                                         {!!.15}
       FillChar(subst, SizeOf(subst), 0);                                       {!!.15}
       QueryDosDeviceA(device, subst, 1024);                                    {!!.15}
       OutputDebugString(PChar(Format('CreateMachineID:midDrives %s:\ %s', [Drive, {$IFDEF DELPHI15UP}System.AnsiStrings.StrPas(subst){$ELSE}StrPas(subst){$ENDIF}])));
       // SUBST drives return a \??\ prefix                                     {!!.15}
       if(Copy({$IFDEF DELPHI15UP}System.AnsiStrings.StrPas(subst){$ELSE}StrPas(subst){$ENDIF}, 1, 4)) <> '\??\' then begin                        {!!.15}
         FillChar(Buf, Sizeof(Buf), 0);
         Buf[0] := Byte(Drive);
         {!!.15} {removed cluster information}
         GetVolumeInformation(PChar(Drive + ':\'), nil, 0,
           PDWord(@Buf[1]){serial number}, I{not used}, I{not used}, nil, 0);

         UpdateTMD(Context, Buf, 5);
       end;                                                                     {!!.15}
     end;
   end;
 {$ENDIF}
 end;
Cevapla
#3
Bilgilendirme için teşekkür ederim Allah c.c razı olsun bu bilgiler ışığında 
ogutil.pas dosyasının içeriğini değiştirerek deneyeceğim.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#4
Onguard bileşeni kullanmanız zorunlu mu? Değilse, hard diskin fiziksel seri numarasını alan küçük bir örnek ekleyeyim. Kendinize göre birtakım işlemlere tabi tutup bir kod oluşturabilirsiniz.


Ek Dosyalar
.zip   hddno.zip (Dosya Boyutu: 52,69 KB / İndirme Sayısı: 4)
Bazen daha ileriye ulaşmak için bir kaç adım geri gitmek mecburidir. Çünkü en ileri sıçrayışlar iki adım geriden başlar.
Cevapla
#5
(12-10-2018, Saat: 15:43)ihalilcoban Adlı Kullanıcıdan Alıntı: Onguard bileşeni kullanmanız zorunlu mu? Değilse, hard diskin fiziksel seri numarasını alan küçük bir örnek ekleyeyim. Kendinize göre birtakım işlemlere tabi tutup bir kod oluşturabilirsiniz.

Bilgilendirme için teşekkür ederim.

Onguard ile demo oluşturma iki tarih arası çalıştırma gibi bir çok özellik var.

Bir çoğunu kullanıyorum.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Balirli saat aralığında kodu çalıştırmak onurakman 13 804 21-05-2020, Saat: 18:01
Son Yorum: mrmarman
  Event Alerter İle Son kaydedilen veriyi alma eyln 7 742 18-02-2020, Saat: 13:31
Son Yorum: esistem
  WebDav ile Yandex Diskten Klasör ve Dosya Listesi Alma theSinan 2 427 13-02-2020, Saat: 19:58
Son Yorum: theSinan
  indy IdTCPServer1 data alma problemi lazarus sadikacar60 3 630 24-01-2020, Saat: 16:34
Son Yorum: sadikacar60
  Metre Sayacından Veri Alma bsogulcan 3 672 04-01-2020, Saat: 16:15
Son Yorum: QuAdR



Konuyu Okuyanlar: 1 Ziyaretçi