Program lisanslama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
isoaltunay
Üye
Mesajlar: 27
Kayıt: 01 Tem 2013 09:43

Program lisanslama

Mesaj gönderen isoaltunay »

merhaba arkadaşlar;

şimdi mysql veritabanından kullanıcı adı ve şifreyi çekip programa giriyorum fakat şöyle birşey istiyorum kullanıcı adı ve şifre ile tek o bilgisayarda açabilsin ve o kullanıcı adı ve şifresi programı açtığı ilk pcye tanımlansın programı başka bilgisayarda mevcut kullanıcı adı ve şifresini girince açamasın
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Program lisanslama

Mesaj gönderen csunguray »

Her ethernet kartının fabrikada verilen bir MAC numarası vardır. O bilgisayar takılı MAC numarasını (veya numaralarını) kaydederek bir kontrol sağlayabilirsin. Bilgisayarda takılı ethernet kartlarının MAC adreslerini almak için:

Kod: Tümünü seç

function GetMACAddress(PCName: string): string;
type
  TASTAT = packed record
    Adapt: NB30.TADAPTERSTATUS;
    NameBuff: array[0..30] of TNAMEBUFFER;
  end;
var
  NCB: TNCB;
  Tmp: string;
  pASTAT: Pointer;
  AST: TASTAT;
begin
  // The IBM NetBIOS 3.0 specifications defines four basic
  // NetBIOS environments under the NCBRESET command. Win32
  // follows the OS/2 Dynamic Link Routine (DLR) environment.
  // This means that the first NCB issued by an application
  // must be a NCBRESET, with the exception of NCBENUM.
  // The Windows NT implementation differs from the IBM
  // NetBIOS 3.0 specifications in the NCB_CALLNAME field.
  FillChar(NCB, SizeOf(NCB), 0);
  NCB.ncb_command := Chr(NCBRESET);
  NetBios(@NCB);

  // To get the Media Access Control (MAC) address for an
  // ethernet adapter programmatically, use the Netbios()
  // NCBASTAT command and provide a "*" as the name in the
  // NCB.ncb_CallName field (in a 16-chr string).
  // NCB.ncb_callname = "* "
  FillChar(NCB, SizeOf(NCB), 0);
  FillChar(NCB.ncb_callname[0], 16, ' ');
  Move(PCName[1], NCB.ncb_callname[0], Length(PCName));
  NCB.ncb_command := Chr(NCBASTAT);

  // For machines with multiple network adapters you need to
  // enumerate the LANA numbers and perform the NCBASTAT
  // command on each. Even when you have a single network
  // adapter, it is a good idea to enumerate valid LANA numbers
  // first and perform the NCBASTAT on one of the valid LANA
  // numbers. It is considered bad programming to hardcode the
  // LANA number to 0 (see the comments section below).
  NCB.ncb_lana_num := #0;
  NCB.ncb_length := SizeOf(AST);

  GetMem(pASTAT, NCB.ncb_length);

  if pASTAT = nil then
  begin
    result := 'Memory allocation failed!';
    exit;
  end;
  NCB.ncb_buffer := pASTAT;
  NetBios(@NCB);

  Move(NCB.ncb_buffer, AST, SizeOf(AST));

  with AST.adapt do
    Tmp := Format('%.2x-%.2x-%.2x-%.2x-%.2x-%.2x',
      [ord(adapter_address[0]), ord(adapter_address[1]), ord(adapter_address[2]),
      ord(adapter_address[3]), ord(adapter_address[4]), ord(adapter_address[5])]);

  FreeMem(pASTAT);
  Result := Tmp;
end;

C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Cevapla