Merhaba arkadaşlar. Bu dersimizde C# Program Açılışına Kısayol Koymak işlemini anlatacağım. Bu derste program açılışına kısayol koyarak farklı bir şekilde açılmasını sağlayacağız. Programın kısa yoluna tıkladıktan sonra bir tuşa basacağız ve farklı bir açılış vereceğiz.
C# Program Açılışına Kısayol Koymak
Bunun kullanımına bir örnek vermek gerekirse; Programı CTRL tuşuna basılı tutarak açarken kullanıcı giriş ekranını pas geçebilir otomatik olarak admin kullanıcısı ile giriş yapabiliriz.
Şimdi bu işlemi nasıl yapacağımızı görelim…
Bu işlem için projemizdeki Program.cs dosyasını kullanacağız.
Senaryomuz şöyle olsun;
Kullanıcı sürekli şifre girmek istemiyor. (Bunu genelde patronlar ister ;) ) İstediği zaman şifresiz giriş yapmak istiyor istediği zamanda şifreli girmek istiyor.
Burada bizim yapmak istediğimiz şey, kullanıcı eğer programı CTRL tuşuna basarak açarsa regedit’e otomatik kayıt değeri eklemek. Projenin açılışında yani, login ekranında da bu regedit kaydını kontrol etmek ve otomatik giriş değeri 1 ise direk giriş yapmak. Tabi burada kullanıcının kodunu ve şifresini de regedite kayıt etmeli ve otomatik geçiş yaptırmadan önce yerlerine yazmamız gerekiyor. Yani giriş işlemi temelde değişmeyecek normal giriş işlemi yapılacak ama load eventinde, regedite bakarak otomatik girişi yaptıracağız. Bu istediği zaman şifresiz giriş yapabilmesi için olacak. Yine aynı şekilde tekrar CTRL tuşuna basarak açıksa ve otomatik giriş aktif ise pasif yapacağız. Program daha açılmadan önce bu işlemi yapmış olacağımızdan dolayı login ekranındaki regedit kontrolünde pasifleştirdiğimiz kayıt alınacağından otomatik giriş yapmayacak.
Şimdi madde madde görelim.
- İlk olarak giriş için kontrolleri yapan ve anamanü formunu açan giriş kodlarını bir metod yapacağız.
- Hazırladığımız metoda kullanıcı kodunu ve şifresini ekleyecek kodları ekleyeceğiz.
- Program.cs dosyasına CTRL tuşunun basılı olup olmadığına bakarak regedite kaydı yapacağız.
- Login formumuzun load eventine ilk olarak regeditteki kullanıcı kodunu ve şifresini giriş nesnelerine yazıyoruz.
- Regeditte otomatik giriş kaydının değerine bakıyoruz.
- Eğer değer 1 ise kullanıcı kodunu ve şifresini yazacağız ve otomatik girişi yapacağız. Otomatik girişi de hazırladığımız metod ile yapacağız
- Eğer değer 0 ise otomatik girişi yapmayacağız sadece kullanıcı kodu ve şifresini yazacağız.
- Tekrar CTRL ile açıldığında otomatik giriş değerini 0 yapacağız. Böylece loaddaki kontrolde 0 değeri gelecek ve otomatik giriş yapılmayacak.
Yukarıda senaryoyu verdik ve daha anlaşılır hale gelmesi için madde madde açıkladım. Şimdi kodlarımızı görelim.
C# Registry (Regedit) İşlemleri – Yazma Okuma dersime bakarak regedit işlemini görebilirsiniz. Bu derste regedit işlemlerini açıklamayacağım.
Kodları görelim…
Giriş işlemlerini metoda almak, kullanıcı kodu ve şifresini regedite yazma kısmına bakalım.
private void GirisYap() { // kontroller // giriş başarılı ise Registry.CurrentUser.CreateSubKey("MB").SetValue("Kulkodu", kul_kodu.Text); Registry.CurrentUser.CreateSubKey("MB").SetValue("Sifre", kul_sifre.Text); }
Şimdi program.cs içindeki CTRL tuşuna basınca yapılacak işleme bakalım.
if ((Control.ModifierKeys & Keys.Control) == Keys.Control) { string otogiris = (Registry.CurrentUser.OpenSubKey("MB").GetValue("OtomatikGiris")).ToString(); if (otogiris == "0") { Registry.CurrentUser.CreateSubKey("MB").SetValue("OtomatikGiris", "1"); MessageBox.Show("Otomatik Giriş Kaydedildi"); } else { Registry.CurrentUser.CreateSubKey("MB").SetValue("OtomatikGiris", "0"); MessageBox.Show("Otomatik Giriş İptal Edildi"); } }
NOT: Bu kodları
Application.Run(new loginform());
bu satırdan önce yazmalısınız.
Şimdi kullanıcı kodunu ve şifresini kaydettik. Program.cs ‘de CTRL tuşuna basarak açında OtomatikGiriş’i aktif / pasif ettik. Login formunda yapacaklarımıza geçelim.
try { kul_kodu.Text = (Registry.CurrentUser.OpenSubKey("MB").GetValue("KulKodu")).ToString(); kul_sifre.Text = (Registry.CurrentUser.OpenSubKey("MB").GetValue("Sifre")).ToString(); string otogiris = (Registry.CurrentUser.OpenSubKey("MB").GetValue("OtomatikGiris")).ToString(); if (otogiris == "1") { GirisYap(); } } catch (NullReferenceException) { //bir şekilde regedit'e kayıt yapılamadıysa hata vermemesi için. }
Gördüğünüz gibi. Login Formumuzun load eventine yukarıdaki kodları yazarak, kullanıcı kodu ile şifreyi yerlerine yazdık ve eğer otomatik giriş 1 ise direk girişi yapsın dedik.
C# Hata Yakalama – Try Catch Finally – Ayrıntılı Anlatım burada detaylı bir anlatım bulunmaktadır. Neden NullReferenceException yazdığımı bu derse bakarak anlayabilirsiniz.
Evet arkadaşlar, bu dersimiz bu kadardı. Anlatması uzun ama kodlara dökmesi gayet kısa bir işlemdi. Elbette bunu başka türlü şekillerle de yapabilirsiniz. Örneğin;
- Bir metin belgesinde (Örn INI uzantılı dosyada) tutarak da yapabilirsiniz.
- C# INI Ayar Dosyası Oluşturma – Kernel32.dll buradaki dersime bakarak, bir config dosyasını nasıl oluşturacağınızı ve bilgileri nasıl tutacağınızı görebilirsiniz.
- Bu bilgileri SQL ‘de parametre mantığında tutarak yapabilirsiniz.
Hangi yöntemi kullanacağınız tamamen size kalmış. Benim ilk aklıma gelen yöntem regedit olduğundan dolayı regedit’i kullandım. Ama unutmamalısınız ki bilgisayar formatlandığında regeditte tuttuğunuz bu bilgiler silinecektir. Aslında aklıma ilk regedit gelmesinin sebebi ise kullanıcı kodu ve şifresini, Bilgilerimi Hatırla işlemi yapmış olduğumdan aklıma geldi. Bunu da başka derste anlatırım.
Bu dersimizde bu kadardı arkadaşlar. Diğer derslerimizde görüşmek üzere…
C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.
Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…
Takipte ve Sağlıcakla kalın.