Regedit'e alan oluşturma

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

Regedit'e alan oluşturma

Mesaj gönderen Dostk »

Merhaba...

Program ilk bilgisayarda çalıştırıldığında rgedit'e tarih alanı oluşturup 30 gün gibi demo için süre vermek istiyorum...

Ancak forumda benzer konu 1 adet nette ise hiç bulamadığımdan yeni konu açmak zorunda kaldım.
Program ilk çalıştığında regedit'e tarih alanı oluşturup ve bu tarihi okumak istiyorum bu konuda bilgi yardımı yapılırsa senirim?
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: Regedit'e alan oluşturma

Mesaj gönderen G.Arkas »

Dostk yazdı:Merhaba...

Program ilk bilgisayarda çalıştırıldığında rgedit'e tarih alanı oluşturup 30 gün gibi demo için süre vermek istiyorum...

Ancak forumda benzer konu 1 adet nette ise hiç bulamadığımdan yeni konu açmak zorunda kaldım.
Program ilk çalıştığında regedit'e tarih alanı oluşturup ve bu tarihi okumak istiyorum bu konuda bilgi yardımı yapılırsa senirim?
Dünya kadar örnek var bu konuda nasıl bulamadın dostum?

viewtopic.php?t=27155

http://www.hazirkod.com/38061bf7-9388-4 ... animi.html

http://www.erkancaglar.com.tr/delphi-7- ... ek-okumak/
Resim
ihalilcoban
Üye
Mesajlar: 121
Kayıt: 10 Ara 2015 10:39

Re: Regedit'e alan oluşturma

Mesaj gönderen ihalilcoban »

Lisanslama için kullanacaksın sanırım o yüzden regedite yazmak güvenli değil. Regedite yazılan son kayıtları bulup değiştirebilen programlar mevcut. Lisans için farklı yöntemler kullanmalısın. Mesela veitabanın varsa programın ilk açılışında tarih alanını kontrol edersin boşsa sistem tarihini alıp yazdırırsın. Sonrasında da tarih alanındaki değeri işleme alıp kontrollerini yaparsın.
Kullanıcı avatarı
Dostk
Üye
Mesajlar: 144
Kayıt: 22 Ağu 2015 12:21

Re: Regedit'e alan oluşturma

Mesaj gönderen Dostk »

Evet lisanslama için kullanmayı düşünüyorum, farklı bir taktik deneyeceğim program çalıştığında regedit ve database aynı tarih ekleyeceğim her hangi birinde değişiklik olursa program kapatacak kendini...

Bu arada resimdeki hatayı alıyorum yeni bir proje de denediğimde ise hata almıyorum demo bir programı geliştirdiğimde sanırım Create ilgili sorun var bunu nasıl çözerim

Resim

Kod: Tümünü seç

procedure TForm11.RegistryLisans(Sender: TObject); // Registry kayıt
var
  REG: TRegistry;
  SUB: AnsiString;
begin
  try
    REG := TRegistry.Create; // regedit bileşeni oluştur
    REG.RootKey := HKEY_CURRENT_USER; // ana root
    SUB := 'Software\' + MainForm.Caption; // oluşturulacak klasör adı
    REG.CreateKey(SUB); // alt keyler oluştur
    REG.CloseKey; // kapat
  finally
  end;
end;
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Regedit'e alan oluşturma

Mesaj gönderen thelvaci »

Nerede finally kısmındaki Reg.Free; kodu ? Daha da iyisi aşağıdaki gibi kodlaman olacak.

Kod: Tümünü seç

procedure TForm11.RegistryLisans(Sender: TObject); // Registry kayıt
var
  REG: TRegistry;
  SUB: AnsiString;
begin
  REG := TRegistry.Create; // regedit bileşeni oluştur
  
  try
    REG.RootKey := HKEY_CURRENT_USER; // ana root
    SUB := 'Software\' + MainForm.Caption; // oluşturulacak klasör adı
    REG.CreateKey(SUB); // alt keyler oluştur
    REG.CloseKey; // kapat
  finally
    if Assigned(REG) then
      FreeAndNil(REG);
  end;
end;
Kullanıcı avatarı
Dostk
Üye
Mesajlar: 144
Kayıt: 22 Ağu 2015 12:21

Re: Regedit'e alan oluşturma

Mesaj gönderen Dostk »

Teşekkür ederim; Bu Create dolayı hatayı nasıl engellerim??
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Regedit'e alan oluşturma

Mesaj gönderen thelvaci »

Dostk yazdı:Teşekkür ederim; Bu Create dolayı hatayı nasıl engellerim??
Cevabı verdim ya. Oluşturduğun bir nesneyi free etmediğin için bu hatayı alıyorsun. Kısaca memory leak oluşuyor uygulamanda.
Kullanıcı avatarı
Dostk
Üye
Mesajlar: 144
Kayıt: 22 Ağu 2015 12:21

Re: Regedit'e alan oluşturma

Mesaj gönderen Dostk »

thelvaci yazdı:
Dostk yazdı:Teşekkür ederim; Bu Create dolayı hatayı nasıl engellerim??
Cevabı verdim ya. Oluşturduğun bir nesneyi free etmediğin için bu hatayı alıyorsun. Kısaca memory leak oluşuyor uygulamanda.

Hocam tam düzeltmek için online oldum ki siz benden önce davranmışsınız, kusura bakmayın, tekrar teşekkür ederim...
ihalilcoban
Üye
Mesajlar: 121
Kayıt: 10 Ara 2015 10:39

Re: Regedit'e alan oluşturma

Mesaj gönderen ihalilcoban »

Dostk yazdı:Evet lisanslama için kullanmayı düşünüyorum, farklı bir taktik deneyeceğim program çalıştığında regedit ve database aynı tarih ekleyeceğim her hangi birinde değişiklik olursa program kapatacak kendini...
Mantığın bana biraz yanlış gibi geldi. Neden dersen, regedit ve veritabanına aynı tarihi ekledin diyelim. Program her açılırken ilgili alanlarda değer var mı yok mu kontrol ettirmezsen, her seferinde bulunduğun tarihi regedite ve veritabanına ekler. Regeditte belki değer varsa üzerine yazabilir ama veritabanında değer varsa ve edit modunda değilse hata verecektir.

Diğer bir husus da format olayı. Diyelim ki kullanıcı bilgisayarına format attı sonrasında da programını çalıştırdı. Veritabanında bulunan tarih formattan bilmem ne kadar öncesi bir tarih regeditte değer yok ve program açılırken bulunduğu tarihi yazdı. Ee veritabanındaki tarihle regeditteki tarih birbirini tutmadığı için sen kullanıcıya lisans vermiş olsan bile program yine hata verecektir.

Önceki mesajımda belirmiştim yine belirteyim. Regedite değer yazıp üzerinde lisanslamayla alakalı bir şeyler yapmak benim mantığıma ters. Ben o yüzden şu şekilde yapıyorum;

Eğer tarih bazlı bir kontrol mekanizması kullanacaksam öncelikle program açılırken veritabanımın ilgili kısmına baktırıyorum değer var mı diye. İlgili alan boşsa bulunduğu tarihi encrypt edip veritabanına yazdırıyorum. Yok eğer ilgili alan boş değilse decyrtp edip diğer kontrol aşamalarına geçiyorum.

Programda demo vs. şeklinde uyarıları kullanmıyorum. Onun yerine kayıt kısıtlaması getiriyorum. Örneğin demo kullanımda 50 tane cariye kadar ekleme izni veriyorum. Cari sayısı 50 olunca da kullanıcı yeni cari eklemek istediğinde lisans penceresini ekrana getiriyorum ve kullanıcıdan lisans parametresini girmesini istiyorum. Başka alanlarda da bu şekilde kısıtlama getiriyorum.

Kullanıcı lisans parametresini girdiği zaman ise yine herhangi bir mesaj vs. kullanmıyorum. Lisans parametresi doğruysa da yanlışsa da lisans penceresini kapattırıyorum. Programa baktığım zaman lisanslı mı değil mi anlıyorum. Bu tamamen sana kalmış bir şey. İstediğin şekil yapabilirsin ama uyarı mesajı kullanma derim.

Buna benzer birçok yöntem var. Bence mantığını bu şekilde kurmalısın.
Biraz uzunca oldu ama umarım işine yarar bilgiler olur.
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Regedit'e alan oluşturma

Mesaj gönderen brs »

ihalilcoban hocam gayet güzel anlatmışsınız, bilgisayara format atıldığında databasedeki regedit deki veriler birbirini tumadığında şifre ekranı açılır, şifre doğru ise databasedeki alanla regedit deki alanlarını guncellerirsen bence sorun olmaz...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
Dostk
Üye
Mesajlar: 144
Kayıt: 22 Ağu 2015 12:21

Re: Regedit'e alan oluşturma

Mesaj gönderen Dostk »

kontrol ettiriyorum.

Kod: Tümünü seç

if Reg.ValueExists('value') = False then // Kontrol
Cevapla