Ana içeriğe atla

#REGISTRY ÜZERİNDE İŞLEMLER#

#REGISTRY ÜZERİNDE İŞLEMLER#

İsterseniz öncelikle regedit nedir? Ne işe yarar ondan bahsedelim. Regedit Türkçe karşılık olarak Sistem Kayıt Defteridir. Peki sistem kayıt defteri nedir? Sistem kayıt defteri programların özelliklerini barındırabileceğimiz microsoft’un oluşturduğu bir veri tabanıdır. Kısaca Regedit sistem kayıtlarının tutulduğu kısımdır.

İlk önce Sistem Kayıt Defterini tanıyalım. Sistem Kayıt Defteri kullanım amacına göre beş farklı mantıksal gruba ayrılmıştır.

HKEY_CLASSES_ROOT: Windows işletim sistemine yüklü uygulamalar ve dosya uzantıları hakkında bilgilerin saklandığı kısımdır.

HKEY_CURRENT_USER: İşletim sistemine giriş yapmış aktif kullanıcı ile ilgili tanımların saklandığı bölümdür.

HKEY_LOCAL_MACHINE: Bilgisayar ve tüm sistem kullanıcılarını ilgilendiren ayarların saklandığı bölümdür.

HKEY_USERS: HKEY_CURRENT_USER grubunda bulunan anahtarlara karşılık gelen bilgilerin saklandığı bölümdür.

HKEY_CURRENT_CONFIG: Anlık konfigürasyon hakkında bilgilerin saklandığı bölümdür.

Kayıt Defteri, Mantıksal gruplar altında bulunan anahtarlar, anahtarlar içerisinde bulunan alt anahtarlar şeklinde organize edilmiştir. Her bir anahtar içerisinde ad,tip, ve değer yapısında istenilen bilgilerin saklanabileceği alanlar bulunmaktadır.

#KAYIT DEFTERİ VERİ TİPLERİ#

Sistem Kayıt Defteri farklı veri tiplerini desteklemektedir. İşte bunlardan bazıları

REG_BINARY: İkili veri tipi.

REG_DWORD: Tam sayı veri tipi.

REG_EXPLAND_SZ: Genişleyebilir karakter dizi değerleri için kullanılmaktadır.

REG_SZ: Karakter veri tipi.

REG_MULTI_SZ: Boşluk veya virgül ile ayrılmış çoklu karakter dizi değerleri için kullanılmaktadır.

#KAYIT DEFTERİ İŞLEMLEMLERİ#

Kayıt Defterindeki bilgilere erişmek ve üzerlerinde işlem yapabilmek için Microsof.Win32.Registry sınıfının metotlarını kullanacağız.

Şimdi bu metot tiplerini biraz inceleyelim.

ClassesRoot: HKEY_CLASSES_ROOT mantıksal grubu içerisinde işlem yapabilmek için kullanılır.

CurrentConfig: HKEY_CURRENT_CONFIG mantıksal grubu içerisinde işlem yapabilmek için kullanılır.

LocalMachine: HKEY_LOCAL_MACHINE amntıksal grubu içerisinde işlem yapabilmek için kullanılır.

Users: HKEY_USERS mantıksal grubu içerisinde işlem yapabilmek için kullanılır.

GetValue: Parametre olarak iletilen anahtar ve ad içerisindeki değeri döndüren metottur. Okuma HKEY_CURRENT_USER grubu içerisinde yapılmaktadır.

SetValue: Parametre olarak iletilen anahtar ve ad içerisine değer yazmak için kullanılabilen metottur. Yazma HKEY_CURRENT_USER grubu içerisinde olur.

Registry.GetValue ve Registry.SetValue metotları, RegistryKey Sınıfı kullanmadan sadece HKEY_CURRENT_USER mantıksal grubu içerisindeki verilere erişim için pratik bir yöntemdir.

Sistem Kayıt Defteri yönetimi için Microsoft.Win32 ad alanı içerisinde tanımlı yardımcı tipler bulunmaktadır.

RegistryKey: Kayıt Defteri içerisindeki herhangi bir anahtarı simgeleyen sınıftır.

RegistryHive: Mantıksal grupları simgeleyen sayılabilir tiptir.

RegistryValueKind: Saklanan veri tipini simgeleyen sayılabilir tiptir.

Evet şimdi bu haftaki ödevimden bahsedeyim. Ödev şu şekilde bilgisayarın açılışında çalışan programların kontrolunu sağlayabilmek. Başlangıçta çalışsın ya da çalışmasın diye.

Programın Ekran görüntüsü bu şekilde

Kodları da şu şekilde

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using Microsoft.Win32;//Registry üzerinde işlem yapabilmek için kullanım kolaylığı açısından bu alanı ekledik.

namespace RegEditOrnek_26_02_2009

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

string run = @"Software\Microsoft\Windows\CurrentVersion\Run";//Registry üzerinde işlem yapacağımız yolları tanıtıık.

string runpasif = @"Software\Microsoft\Windows\CurrentVersion\RunPasif";

RegistryKey anahtar;//isim tanımlamasını yaptık

void RegOku(string RegYol)//RegOku isminde bir metot oluşturduk.

{

anahtar = Registry.LocalMachine.OpenSubKey(RegYol,false);//İşlem yapacağımız registry bölümünü gösterdik.

//ikinci parametre sadece okuma işlemi yapılacağı için false.

listView1.View = View.Details;//tenımlamayı yaptık

ListViewItem oge;

foreach (string ad in anahtar.GetValueNames())//belirlediğimiz bölümdeki ad ve veri yollarını listview'e aktarıyoruz.

{

oge = new ListViewItem(ad);

oge.SubItems.Add(anahtar.GetValue(ad).ToString());

listView1.Items.Add(oge);

if (RegYol == run) oge.Checked = true;

}

anahtar.Close();

}

void RegYaz(string RegYol, string DegerAdi, string DegerYolu)

{

anahtar = Registry.LocalMachine.OpenSubKey(RegYol, true);

RegistryKey Regyaz = Registry.LocalMachine.CreateSubKey(RegYol);//Registry içerisinde yeni bir dizin oluşturuyoruz.

Regyaz.SetValue(DegerAdi, DegerYolu);//Oluşturduğumuz dizine veri girişi yapıyoruz.

anahtar.Close();//Registry ile işimizin bittiğini söylüyoruz.

}

void RegSil(string RegYol, string DegerAdi)

{

anahtar = Registry.LocalMachine.OpenSubKey(RegYol,true);//veri üzerinde işlem yapacaksak ikinci parametre true olmalı.

anahtar.DeleteValue(DegerAdi);//Belirlediğimiz alandaki veriyi siliyoruz

anahtar.Close();

}

void RegKontrol(string RegYol, string DegerAdi, string DegerYolu)

{

int islem=0;

int yol = 0;

if (RegYol == run) yol = 1;

anahtar = Registry.LocalMachine.OpenSubKey(RegYol,false);

foreach (string ad in anahtar.GetValueNames())

{

if (ad == DegerAdi) { islem = 1; break; }

}

if (islem == 0)

{

RegYaz(RegYol, DegerAdi, DegerYolu);

if (yol == 1)

RegSil(runpasif, DegerAdi);

else

RegSil(run, DegerAdi);

}

anahtar.Close();

}

private void Form1_Load(object sender, EventArgs e)

{

RegOku(run);

RegOku(runpasif);

}

private void btnUygula_Click(object sender, EventArgs e)

{

foreach (ListViewItem item in listView1.Items)

if (item.Checked == true) RegKontrol(run, item.Text, item.SubItems[1].Text);

else if(item.Checked==false) RegKontrol(runpasif, item.Text, item.SubItems[1].Text);

listView1.Items.Clear();

RegOku(run);

RegOku(runpasif);

}

private void btniptal_Click(object sender, EventArgs e)

{

Close();

}

}

}
Yok Bunlara rağmen olmadı diyorsan. Belki Registry İşlemleri işini çözebilir.

Yorumlar

Bu blogdaki popüler yayınlar

C# Görüntü işleme

İlk Olarak Burayı Okumalısınız Öncelikle görüntü işleme üzerine olan kodları birebir hepsini ben yazmadım bunun için google da “c# color tracking” diye bir arama gerçekleştirdim ve referans olarak http://www.uguryalcin.de/c/372 adresini belirledim. Konuya geçecek olursak, ilk önce birkaç kütüphane dosyasına ihtiyacınız olacak. örnek projede kütüphaneler mevcut bunlar kendinizi daha da ileri götürmek için. aforge kütüphanesini indirmek isteyebilirsiniz. Ekran görüntüsü. Ben aslına bakarsanız kod anlatma konusunda pek iyi değilim. Örnek projeyi indirin. Kodları silin aralarına bir şeyler eklemeye çalışın ve öğrenin. Şimdi yeni bir soru ile daha karşılaşıyoruz. Aynı anda birkaç görüntü almak istersek ne yapmalıyız. Aslında onunda cevabı basit ama biraz da sizin araştırma yapıp kendi blogunuzda yayınlamanız için onu size bırakıyorum. Yayınlamış olduğunuz yazıyı yorumlardan paylaşırsanız çok mutlu olurum. Sağlıcakla kalın :) using System; using System.Collections.G...

C# pixel, görüntü işleme

İlk olarak Görüntü İşleme ile ilgili olan yazıyı okumanızı tavsiye edilir. http://yzgrafik.ege.edu.tr/~tekrei/dosyalar/sunum/gi.pdf bu dökümanın 25.sayfasındaki formülü kullanarak siyah beyaz bir resim yapalım dedim. Ekran görüntüsü aşağıdaki gibi oldu. Kaynak kodda şu şekilde ya da c# Pixel İşleme using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace pixelIsleme { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Bitmap PixelTara( Bitmap Goruntu) { Bitmap yeniGoruntu = new Bitmap (Goruntu.Width, Goruntu.Height); //Bitmap sınıfımızı oluşturduk. for ( int i = 0; i < Goruntu.Width; i++) //resmi yatay olarak taramak için { for ( int j...

C# İle Ping Atma

Evet arkadaşlar uzun zamandan beri blog’ta bir şeyler paylaşma sıkıntısı yaşıyorum. Bende en iyisi eski çalışmalarımı bir bir dökeyim dedim. Öncelikle size birazdan anlatacağım programın yapım hikayesini anlatayım. Bildiğiniz üzere bir zamana kadar Türk Telekom tek internet sağlayıcısıydı sonra d-smile çıktı, daha sonrada biri.net kendisini gösterdi… Biz internete bağlandığımız zaman bunların üçü de vardı aslında ama bulunduğumuz yer itibari ile –okuduğumuz yer küçük bir kasaba 7300 nüfuslu- Türk Telekom’u seçtik, tabi bir ara keşke bağlatmasaydık da dedik ama artık her şey için çok geçti. İnternetimiz bir geliyor, bir gidiyor sonra hiç gelmiyordu. Uzun telefon görüşmeleri ve biraz tehditten sonra zar zor bir teknik servis gönderebildiler. Tamam hiçbir değişiklik olmamıştı ama en azından bulunduğumuz yerde ki bayii müdürü gibi hata sizden kaynaklanıyor dememişti. Hatlarda parazit mi varmış ne gene düzelmedi fakat gel zaman git zaman internetin kesilmeden bağlı kalma süresi 5-6 saatlere...