Türkçe   |   English
Takvim
Makale Kategorileri
Makale Arşivi
En Çok Okunanlar
Linkler
Bloglar
Dosyalar

RDP Client Control İle Remote Desktop Connection Oluşturma
Yayınlanma Tarihi 06.06.2007
Kategoriler C#
Okunma Sayısı 2722
Özet
Bu makalemde Microsoft RDP Client Control ile kendi yazdığımız Windows uygulamalarında uzak masaüstü bağlantıları (Remote Desktop Connection) oluşturma ve bu bağlantıları yönetme hakkında bilgi vereceğim.

    Merhabalar,

    Bilindiği üzere uzak masaüstü bağlantısı oluşturma bize başka bir bilgisayara kendi bilgisayarımız üzerinden ulaşabilme imkanı verir. Kendi belirlediğimiz birtakım özellikleri önceden ayarlayarak (bağlantı esnasında diskleri paylaştırma, bağlanacağımız bilgisayara hangi ekran çözünürlüğüyle bağlanacağımız gibi) uzaktan bağlanabilme izni verilmiş bir bilgisayarda kendi bilgisayarımızdaymış gibi çalışabiliriz. Windows'un default olarak Accessories - Communications menüsü altında bulunan Remote Desktop Connection tool'u ile biraz önce bahsettiğim ayarları yapıp bağlantı oluşturmak oldukça basittir. Ancak bu tool'un sundukları ile yetinmiyorsak, kendi remote bağlantılarımızı oluşturup, bu bağlantıları saklayıp yönetebileceğimiz bir uygulama yazmak da .Net ile bize sunulan component'ler içinde bulunan Microsoft RDP Client Control  ile mümkündür. Ben bu makalemde Microsoft RDP Client Control ile kend
i yazdığımız Windows uygulamalarında uzak masaüstü bağlantıları (Remote Desktop Connection) oluşturma ve bu bağlantıları yönetme hakkında bilgi vereceğim.

   
İlk olarak kontrolü bir Windows uygulamasında nasıl kullanmaya başlayabileceğimizi görelim. Bir Windows uygulaması oluşturalım ve Toolbox'a sağ tıklayıp Choose Items...'a tıklayalım:

    Ardından açılan pencerede COM Components sekmesine tıklayalım ve listeden Microsoft RDP Client Control'u seçelim:

 

    OK'e basıp pencereyi kapadıktan sonra Toolbox'a Microsoft RDP Client Control eklenmiş olacaktır:

    Kontrolü Toolbox'dan sürükleyip formumuza bırakarak kullanmaya başlayabiliriz.

    Şimdi küçük bir uygulamada bu kontrolün belli başlı property ve metodlarını kullanarak remote bir bağlantı oluşturalım. Windows formuna toolbox'dan Microsoft RDP Client Control'u sürükleyip bırakalım ve Dock property'sini Fill olarak set edelim:

   Şimdi de formun Load'ında remote bağlantıyı açmamızı sağlayacak olan aşağıdaki kodu yazalım:

private void Form1_Load(object sender, EventArgs e)
{
    rdpc.Server = "isil";
    rdpc.UserName = "io";
    rdpc.Domain = "BILGEADAM";
    rdpc.AdvancedSettings5.ClearTextPassword = "***";
    rdpc.AdvancedSettings5.RedirectDrives = true;
    rdpc.AdvancedSettings5.RedirectPorts = false;
    rdpc.AdvancedSettings5.RedirectPrinters = true;
    rdpc.AdvancedSettings5.RedirectSmartCards = false;
    rdpc.DesktopHeight = 950;
    rdpc.DesktopWidth = 1580;
   

   

    rdpc.Connect();     
}

    Uygulamayı çalıştırdığımızda remote bağlantımız oluşturulacaktır:

    Kodda kontrolün bağlanacağı makinanın adı, kullanıcı adı, şifre, domain bilgisi gibi temel bilgileri set ettik. Ardından da remote bilgisayara bağlanıldığında disk sürücüsü, port, printer ve smart card gibi bileşenlerden erişebilmek istediklerimizi set ettik. Kontrolün görüntüleyeceği makinanın masaüstü genişlik ve yükseklik ayarlarını da set ettikten sonra Connect metodu ile bağlanmasını sağladık.

    Bu örnekten sonra şimdi de uygulamamıza yeni bir form ekleyelim ve form üstündeki butona tıkladığımızda açılan formdaki alanları doldurarak remote bağlantı açalım. Eklediğimiz formu aşağıdaki gibi dizayn edelim:

 

    Form üstündeki Yeni Bağlantı butonuna tıkladığımızda da açılacak olan ekranı aşağıdaki gibi tasarlayalım:

 

    Ardından ana formdaki butona tıkladığımızda çalışacak olan kodu yazalım:
 

public string makinaAdi = "";
public
string kullaniciAdi = "";
public
string domainAdi = "";
public
string sifre = "";

private
void btnYeniBaglanti_Click(object sender, EventArgs e)
{
    frmYeniBaglanti
insFrmYeniBaglanti = new frmYeniBaglanti();
    insFrmYeniBaglanti.Owner = this;
    insFrmYeniBaglanti.ShowDialog();
    axMsRdpClient41.Server = makinaAdi;
    axMsRdpClient41.UserName = kullaniciAdi;
    axMsRdpClient41.Domain = domainAdi;
    axMsRdpClient41.AdvancedSettings5.ClearTextPassword = sifre;
    axMsRdpClient41.Connect();   
}

    Ardından da Yeni Bağlantı formundaki Bağlan butonuna bastığımızda çalışacak olan kodu yazalım:

private void btnBaglan_Click(object sender, EventArgs e)
{
    ((frmBaglan)this.Owner).makinaAdi = txtMakinaAdi.Text;
    ((frmBaglan)this.Owner).kullaniciAdi = txtKullaniciAdi.Text;
    ((frmBaglan)this.Owner).domainAdi = txtDomainAdi.Text;
    ((frmBaglan)this.Owner).sifre = txtSifre.Text;
    this
.Close();
}

    Yazdığımız bu kod bloklarında ilk olarak Yeni Bağlantı formunun bir instance'ını aldık ve Owner property'sine ana formu atadık. Ardından ShowDialog ile bağlantı özelliklerini gireceğimiz formu açtık ve ana formda class level tanımladığımız değişkenleri RDP Client Control nesnesinin ilgili property'lerine atadık. Yeni bağlantı formunda bulunan Bağlan butonunun click event'inde ise ana formumuzda tanımladığımız class level değişkenlere form üstündeki kontrollerin değerlerini atadık.

    Artık kodu derleyip çalıştırdığımızda ve ilgili alanları doldurduğumuzda remote bağlantı oluşturabiliriz. Siz de sürekli remote bağlantılarla çalışıyorsanız yaptığımız örneği daha da genişleterek sık kullandığınız remote bağlantıları tuttuğunuz, yeni bağlantı oluşturup kaydettiğiniz veya sildiğiniz bir uygulama yazabilirsiniz.

    RDP Client Control kullanarak benim yazmış olduğun bir uzak masaüstü bağlantı yönetme uygulamasına ve kodlarına www.isilorhanel.net/palantir adresinden ulaşabilirsiniz.

    Makalemin faydalı olması dileğiyle.

    Işıl Orhanel

Yazgeliştir

11.03.2010 - kenan davut
Ne bilgisi paylaşacak ya kendisi biliyo mu ki al codeproject den yaz dimi ışıl

24.09.2009 - Hüseyin Zengin
Işıl mümkünse bende hamitin istediği gibi bir döküman istiyorum.Bir çok kaynak araştırdım ama böyle örnek bulamdım.Zahmet olmazsa birde patchli bir örnek ders anlatabilirmisin.
huseyinzengin.net

07.08.2008 - Hamit Serbest
Işıl merhaba, RDP ile ilgili örneğin güzel ancak aradığım şey vnc tarzı. Makineye bir patch atıp kendi bilgisayarımdan o patch lerin çalıştığı desktop lara ulaşmak. Buradaki amacım ADSL modemler üzerinde hiçbir yönlendirme yapmadan bilgisayara bağlanabilmek. Bu konuda bilgini paylaşabilirsen sevinirim. İyi Çalışmalar
serbesthamit.blogspot.com
Yorum Ekle
Ad Soyad
Web Sitesi
E-Mail
Yorum

Fotoğraflar
MSDN Forumlarında Ben
Entryler
Haberler
Makaleler