Çözüldü C# formunda dosya yolu vermeden uygulama açma nasıl yapılır?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Hüsnü_Çoban

Hectopat
Katılım
5 Nisan 2020
Mesajlar
2.681
Çözümler
9
Daha fazla  
Cinsiyet
Erkek
Meslek
Sivil Polis
Şimdi mesela ben C# formumda Discord'u açacağım ama mesela başka kişi C: diskini kurup, ben D: diskine kurdum. Varsayılan olarak açmanın yolu var mıdır?
 
Son düzenleyen: Moderatör:
Çözüm
Her program için olmaz bu. Sistem kayıt deferine kayıtlı yazılımlar için geçerli olur. Direkt program ismini verip çalıştır derseniz hata verir genel olarak. O yüzden Process.Start metodu kullanmadan önce ilgili programı sistem üzerinde aramanız gerekiyor.

Hızlı bir arama yapmak için sadece ilgili dosya ismi ve uzantısı ile arama yapmanız lazım. Yoksa tüm dizinleri tek tek taramak zorunda kalır ve bu çok uzun sürebilir.

Ardından ilgili dosya tespit edilirse Process.Start metodunu kullanabilirsiniz.

Onun dışında bu kadar uğraşmak yerine direkt dosya yolu ile verebilirsiniz.

C#:
            string[] list = Directory.GetFiles(@"C:\", "Discord.exe", SearchOption.AllDirectories);
            List<string> dosyalar = new List<string>();

            foreach (string file in list){
                dosyalar.Add(file);
            }


            if (dosyalar.Count == 0){
                Console.WriteLine("Aranan dosya yok");
            }else{
                Process.Start(dosyalar[0]);
            }
Benim şahsi fikrim şu: C# üzerinde Discord'un kurulu olduğu dizini bulmaya çalışman gerekmekte öncelikle. Sonrasında o exe dosyasını bulunca o exe dosyasını çalıştırırsın.
 
Benim şahsi fikrim şu: C# üzerinde Discord'un kurulu olduğu dizini bulmaya çalışman gerekmekte öncelikle. Sonrasında o exe dosyasını bulunca o exe dosyasını çalıştırırsın.
Doğru anladıysam: Discord'un dosya yolunu zaten biliyorum, sadece bunu direkt açmasını sağlamak istiyorum.
 
Doğru anladıysam: Discord'un dosya yolunu zaten biliyorum, sadece bunu direkt açmasını sağlamak istiyorum.
Bu yol değişken olabilir dediğin gibi ben C: sürücüsüne kurarım o başka sürücüye kurar. Bunu öncelikle C# üzerinde aratman lazım yani belirli bir yol vermemen lazım.
 
Direkt olarak,
C#:
System.Diagnostics.Process.Start("discord.exe");
yazdığınızda dosya yolundan bağımsız olarak Discord'u açması lazım. Denediniz mi?
 
Her program için olmaz bu. Sistem kayıt deferine kayıtlı yazılımlar için geçerli olur. Direkt program ismini verip çalıştır derseniz hata verir genel olarak. O yüzden Process.Start metodu kullanmadan önce ilgili programı sistem üzerinde aramanız gerekiyor.

Hızlı bir arama yapmak için sadece ilgili dosya ismi ve uzantısı ile arama yapmanız lazım. Yoksa tüm dizinleri tek tek taramak zorunda kalır ve bu çok uzun sürebilir.

Ardından ilgili dosya tespit edilirse Process.Start metodunu kullanabilirsiniz.

Onun dışında bu kadar uğraşmak yerine direkt dosya yolu ile verebilirsiniz.

C#:
            string[] list = Directory.GetFiles(@"C:\", "Discord.exe", SearchOption.AllDirectories);
            List<string> dosyalar = new List<string>();

            foreach (string file in list){
                dosyalar.Add(file);
            }


            if (dosyalar.Count == 0){
                Console.WriteLine("Aranan dosya yok");
            }else{
                Process.Start(dosyalar[0]);
            }
 
Son düzenleme:
Çözüm
Her program için olmaz bu. Sistem kayıt deferine kayıtlı yazılımlar için geçerli olur. Direkt program ismini verip çalıştır derseniz hata verir genel olarak. O yüzden Process.Start metodu kullanmadan önce ilgili programı sistem üzerinde aramanız gerekiyor.

Hızlı bir arama yapmak için sadece ilgili dosya ismi ve uzantısı ile arama yapmanız lazım. Yoksa tüm dizinleri tek tek taramak zorunda kalır ve bu çok uzun sürebilir.

Ardından ilgili dosya tespit edilirse Process.Start metodunu kullanabilirsiniz.

Onun dışında bu kadar uğraşmak yerine direkt dosya yolu ile verebilirsiniz.

C#:
            string[] list = Directory.GetFiles(@"C:\", "Discord.exe", SearchOption.AllDirectories);
            List<string> dosyalar = new List<string>();

            foreach (string file in list){
                dosyalar.Add(file);
            }


            if (dosyalar.Count == 0){
                Console.WriteLine("Aranan dosya yok");
            }else{
                Process.Start(dosyalar[0]);
            }
Az çok çözdüm kodun mantığını ama bu hata yönetici olarak çalıştırılmadığından kaynaklanıyor değil mi?
1678907365527.png
 
Eğer erişim izni olmayan bir klasöre erişmek istiyorsanız evet. Yönetici izni gerekir bazı klasörler için. Özellike kök dizini üzerindeyse genelde yönetici izni ister.
Bunun çözümü Visual Studio üzerinde var mıdır? VT'u yönetici olarak başlatsam kabul eder mi? Denemek istiyorum özelliği.
 
Hayır, programın app.manifest dosyasını yönetici olarak ayarlamanız lazım. Ardından derlerken programı Visual Studio yönetici olarak çalıştırmanızı ister ve sorun çözülür.

 

Geri
Yukarı