C# UygulamaKapat Konsol uygulaması

Bazı windows uygulamaları kendilerini başlangıca otomatik eklerler. Bir uygulama gerekli olsa da başlangıçta otomatik kapatılması istenebilir. Aşağıdaki Visual Studio 2008 kullanılarak (.Net Framework 2.0) ile yapılmış C# konsol uygulaması ile başlangıçta çalışan uygulamaların otomatik kapatılması sağlanmaktadır.

Uygulama, Kayıt defterine değer yazma-silme işlemleri ve konsol parametrelerinin okunması-değerlendirilmesi işlemlerine örnektir.

Aşağıda uygulamanın başlangıçta çalışması görünmektedir:

Visual Studio’da C# konsol uygulaması oluşturmak için File->New->Project seçilir. Gelen diyalogdan Visual C#->Windows->Console Application seçilip proje ismi verilip OK ile diyalog kapatılır.

Uygulama konsol uygulaması olduğu için herhangi bir form tasarımı yoktur. Kodlar komut satırı üzerinde çalışmakta ve işi bittiği zaman komut satırı penceresi otomatik kapanmaktadır.

Uygulamanın üç farklı kullanım modu vardır:

1. Uygulama, başlangıçta kapatılacak programın ismi ve “/as” parametresi ile konsolda çalıştırılarak Windows başlangıçına kendisini eklemesi sağlanmaktadır. Her kapatılacak program için bu işlem tekrarlanır.

Aşağıda uygulama ile Calc.exe programınının Windows başlangıcına eklenmesi örneği görünmektedir:

Bu işlemden sonra Kayıt defterinin “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run” anahtarına uygulama kendisini ve kapatılacak programın ismini eklediği için sistemin ilk başlangıcında otomatik çalışma gerçekleşecektir ve ismi yazılı program otomatik kapatılacaktır. Aşağıda Kayıt defterine eklenen değer görünmektedir:

2. Uygulama, başlangıçta kapatılacak programın ismi ve “/ds” parametresi ile konsolda çalıştırılırsa Windows başlangıcındaki başlangıç kaydının silinmesi sağlanmaktadır. Her eklenmiş programın silinmesi için bu işlem tekrarlanır. Aşağıda kayıt defterinden kaydın silinmesi örneği görünmektedir:

3. Uygulama başlangıca eklenme işleminden sonra Windows baştan başlatıldığında kendiliğinden başlayacak. 5 saniye bekledikten sonra ekleme sırasında verilmiş programı otomatik kapatacaktır.

Uygulama sadece başlangıca eklenerek değil windows çalışırken de şekildeki gibi konsol parametreleri yazılarak kullanılabilir.

Yukarıdaki örneklerde Calc.exe elbetteki otomatik olarak başlangıçta çalışmamaktadır. Calc.exe örnek olarak kullanılmıştır. Calc.exe çalıştırıldığında Görev Yöneticisinde “Windows Hesap Makinesi” olarak görünecektir. Uygulamaya program ismi parametre olarak verilirken Görev Yöneticisinde görünen haliyle değil sabit diskte çalıştırılan hali verilmelidir. Uygulama hata kontrolü yapmamaktadır. Sadece parametreleri kontrol etmektedir. Bu yüzden hatalı veya eksik verilen program ismi işlemin yapılmamasına sebep olacaktır.

Aşağıda uygulamanın C# kodları görünmektedir:

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using Microsoft.Win32;

namespace UygulamaKapat
{
    class Program
    {
        const string PR_AC = "/as", PR_KAPAT = "/ds";
        const int SURE = 5;
        
        static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                Console.WriteLine("Uygulamaya parametre girilmelidir!");
                Console.WriteLine("Kapatmak için lütfen bir tuşa basin...");
                Console.ReadKey();
            }
            if (args.Length == 1)
            {
                Console.WriteLine("5 saniye bekleniyor...");
                System.Threading.Thread.Sleep(SURE*1000);
                Console.WriteLine("Ayarlanmış uygulama kapatılıyor...");
                UygulamaKapat(args[0]);
            }
            if (args.Length == 2)
            {
             
                if (args[0] == PR_AC || args[0] == PR_KAPAT)
                {
                    if (args[0] == PR_AC && args[1] != PR_KAPAT)
                    {
                        Console.WriteLine("Sistem başlangıcına ekleniyor...");
                        BaslangicaEkle(args[1], true);
                        Console.WriteLine("Kapatmak için lütfen bir tuşa basin...");
                        Console.ReadKey();
                        
                    }
                    if (args[0] == PR_KAPAT && args[1] != PR_AC)
                    {
                        Console.WriteLine("Sistem başlangıcından siliniyor...");
                        BaslangicaEkle(args[1], false);
                        Console.WriteLine("Kapatmak için lütfen bir tuşa basin...");
                        Console.ReadKey();
                    }
                }
                if (args[1] == PR_AC || args[1] == PR_KAPAT)
                {
                    if (args[1] == PR_AC && args[0] != PR_KAPAT)
                    {
                        Console.WriteLine("Sistem başlangıcına ekleniyor...");
                        BaslangicaEkle(args[0], true);
                        Console.WriteLine("Kapatmak için lütfen bir tuşa basin...");
                        Console.ReadKey();
                    }
                    if (args[1] == PR_KAPAT && args[0] != PR_AC)
                    {
                        Console.WriteLine("Sistem başlangıcından siliniyor...");
                        BaslangicaEkle(args[0], false);
                        Console.WriteLine("Kapatmak için lütfen bir tuşa basin...");
                        Console.ReadKey();                        
                    }
                }
            }
        }

        static void UygulamaKapat(string uygulamaadi)
        {
            string uygulamaAdi = uygulamaadi;
            string adOnar = uygulamaadi.Replace(".exe", "");

            if (uygulamaadi.Contains(".exe"))
            {
                foreach (Process process in Process.GetProcessesByName(adOnar))
                {
                    process.Kill();
                }
            }
            else if (!uygulamaadi.Contains(".exe"))
            {
                foreach (Process process in Process.GetProcessesByName(uygulamaAdi))
                {
                    process.Kill();
                }
            }
        }

        static void BaslangicaEkle(string uygulamaismi, bool baslangicaeklenecek)
        {
            RegistryKey rkey = Registry.CurrentUser.OpenSubKey
                ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

            string yol = System.Reflection.Assembly.GetExecutingAssembly().Location;

            if (baslangicaeklenecek)
                rkey.SetValue("uk_"+uygulamaismi, yol+" "+uygulamaismi);
            else
                rkey.DeleteValue("uk_"+uygulamaismi, false);
        }
    }
}

Uygulamada kod üzerinde PR_AC ve PR_KAPAT sabitlerini degiştirerek “/as” ve “/ds” olan parametreler değiştirilebilir. SURE sabiti değiştirilerek kapatma için beklenen süre değiştirilebilir.

Uygulamanın çalışabilmesi için en az .Net Framework 2.0 yüklü 32 bit Windows işletim sistemi gereklidir.

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

w

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.