none
Çalışan exe nin ismini değiştirmek RRS feed

  • Soru

  • çalışan bir exe'nin işlem ismini değiştirmek ya da  maskeleyebilmek mümkün müdür ? Yaptığım programın birden fazla çalışmaması gerekli. Bunu da çalışan işlemlerin isimlerine bakarak engelleyebiliyorum. 
    26 Temmuz 2013 Cuma 11:14

Yanıtlar

  • Ismini degistirmek yerine Mutex ve Semaphore classlarina bak.

    Not: VB ise project ayaralarinda single instance secenegi var.

    26 Temmuz 2013 Cuma 11:46
  • Bence programın tekrar çalıştırılmasını önlemek için yanlış bir yöntem uygulamışsınız. Sadece çalışan process ler içerisinde aynı isimle process varsa çalışmasın şeklindeki mantık, şuan karşılaştığınız problemler gibi sorunlara yol açar. Bunun yerine Program başlangıç dosyasında (program.cs) Mutex sınıfını kullanmanız daha doğru olur. Şöyle örnek vereyim:

        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
    
                Boolean calismiyor;
                using (Mutex mutex = new Mutex(true, "programınız için benzersiz bir id değeri", out calismiyor))
                {
                    if (calismiyor)
                    {
                        Application.Run(new Form1());
                    }
                    else
                    {
                        MessageBox.Show("Program zaten çalışıyor.");
                        return;
                    }
                }
            }
        }

    26 Temmuz 2013 Cuma 11:49

Tüm Yanıtlar

  • Neden ismini değiştirmek istiyorsunuz anlayamadım?
    26 Temmuz 2013 Cuma 11:36
  • yaptığım programın tekrardan açılmaması lazım bu yüzden çalışan işlemleri kontrol edip aynı isimde işlem varsa programın çalışmamasını sağlıyorum. programın değiştirilmediğinden emin olmak için de dosya hash ine bakıyorum. Programı kullanan kişi çalışırken ismini değiştirirse yada maskelerse tekrardan çalıştırabilir.
    26 Temmuz 2013 Cuma 11:41
  • Ismini degistirmek yerine Mutex ve Semaphore classlarina bak.

    Not: VB ise project ayaralarinda single instance secenegi var.

    26 Temmuz 2013 Cuma 11:46
  • Bence programın tekrar çalıştırılmasını önlemek için yanlış bir yöntem uygulamışsınız. Sadece çalışan process ler içerisinde aynı isimle process varsa çalışmasın şeklindeki mantık, şuan karşılaştığınız problemler gibi sorunlara yol açar. Bunun yerine Program başlangıç dosyasında (program.cs) Mutex sınıfını kullanmanız daha doğru olur. Şöyle örnek vereyim:

        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
    
                Boolean calismiyor;
                using (Mutex mutex = new Mutex(true, "programınız için benzersiz bir id değeri", out calismiyor))
                {
                    if (calismiyor)
                    {
                        Application.Run(new Form1());
                    }
                    else
                    {
                        MessageBox.Show("Program zaten çalışıyor.");
                        return;
                    }
                }
            }
        }

    26 Temmuz 2013 Cuma 11:49
  • Bence programın tekrar çalıştırılmasını önlemek için yanlış bir yöntem uygulamışsınız. Sadece çalışan process ler içerisinde aynı isimle process varsa çalışmasın şeklindeki mantık, şuan karşılaştığınız problemler gibi sorunlara yol açar. Bunun yerine Program başlangıç dosyasında (program.cs) Mutex sınıfını kullanmanız daha doğru olur. Şöyle örnek vereyim:

        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
    
                Boolean calismiyor;
                using (Mutex mutex = new Mutex(true, "programınız için benzersiz bir id değeri", out calismiyor))
                {
                    if (calismiyor)
                    {
                        Application.Run(new Form1());
                    }
                    else
                    {
                        MessageBox.Show("Program zaten çalışıyor.");
                        return;
                    }
                }
            }
        }

    Yardımınız için teşekkürler, bu kod farklı hesapları da kontrol ediyor mu.
    26 Temmuz 2013 Cuma 12:06
  • Rica ederim. Farklı hesaplar derken farklı oturumlardan bahsediyorsanız bunu denemedim. Bunun için benzersiz id önüne "Global\\" şeklinde bir ön ek kullanmanız gerekebilir.
    26 Temmuz 2013 Cuma 12:31
  • regedit iş görmüyormu 
    26 Temmuz 2013 Cuma 15:27
  • regedit iş görmüyormu 
    Görür ama mantıklı olmaz. Program açıkken regedit editlenerek çalışmıyormuş gibi gösterilebilir.
    26 Temmuz 2013 Cuma 15:30