Regedit'e alan oluşturma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Regedit'e alan oluşturma
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?
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?
Re: Regedit'e alan oluşturma
Dünya kadar örnek var bu konuda nasıl bulamadın dostum?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?
viewtopic.php?t=27155
http://www.hazirkod.com/38061bf7-9388-4 ... animi.html
http://www.erkancaglar.com.tr/delphi-7- ... ek-okumak/
-
- Üye
- Mesajlar: 121
- Kayıt: 10 Ara 2015 10:39
Re: Regedit'e alan oluşturma
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.
Re: Regedit'e alan oluşturma
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
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
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;
Re: Regedit'e alan oluşturma
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;
Re: Regedit'e alan oluşturma
Teşekkür ederim; Bu Create dolayı hatayı nasıl engellerim??
Re: Regedit'e alan oluşturma
Cevabı verdim ya. Oluşturduğun bir nesneyi free etmediğin için bu hatayı alıyorsun. Kısaca memory leak oluşuyor uygulamanda.Dostk yazdı:Teşekkür ederim; Bu Create dolayı hatayı nasıl engellerim??
Re: Regedit'e alan oluşturma
thelvaci yazdı:Cevabı verdim ya. Oluşturduğun bir nesneyi free etmediğin için bu hatayı alıyorsun. Kısaca memory leak oluşuyor uygulamanda.Dostk yazdı:Teşekkür ederim; Bu Create dolayı hatayı nasıl engellerim??
Hocam tam düzeltmek için online oldum ki siz benden önce davranmışsınız, kusura bakmayın, tekrar teşekkür ederim...
-
- Üye
- Mesajlar: 121
- Kayıt: 10 Ara 2015 10:39
Re: Regedit'e alan oluşturma
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.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...
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.
Re: Regedit'e alan oluşturma
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...
Re: Regedit'e alan oluşturma
kontrol ettiriyorum.
Kod: Tümünü seç
if Reg.ValueExists('value') = False then // Kontrol