tahatas Posted April 20 Share Posted April 20 Arkadaşlar C# form üzerinden basit bir uygulama yapıyorum. Bu uygulamada girilen dosya konumunu silmek istiyorum. File. Delete komutu ile dosyayı siliyorum. File. Exist kodu ile dosyanın olup olmadığını sorguluyorum ve try-catch kullanıyorum. Hiçbir hata almıyorum fakat dosya silinmiyor. File. Delete komutundan sonra file deleted yazıyorum fakat dosya silinmiyor. Ben kendim el ile silmek istediğimde bana emin misiniz diye soruyor. Anladığım kadarıyla bana soru sorduğu için C# file. Delete komutu ile silemiyor. Bu soruya C# ile nasıl otomatik evet diyebilirim? Quote Link to comment Share on other sites More sharing options...
shadesofdeath Posted April 21 Share Posted April 21 tahatas, 11 saat önce yazdı: Arkadaşlar C# form üzerinden basit bir uygulama yapıyorum. Bu uygulamada girilen dosya konumunu silmek istiyorum. File. Delete komutu ile dosyayı siliyorum. File. Exist kodu ile dosyanın olup olmadığını sorguluyorum ve try-catch kullanıyorum. Hiçbir hata almıyorum fakat dosya silinmiyor. File. Delete komutundan sonra file deleted yazıyorum fakat dosya silinmiyor. Ben kendim el ile silmek istediğimde bana emin misiniz diye soruyor. Anladığım kadarıyla bana soru sorduğu için C# file. Delete komutu ile silemiyor. Bu soruya C# ile nasıl otomatik evet diyebilirim? Dosya silinmemesinin sebepleri 1 - App Manifest üzerinden requestedExecutionLevel ayarında level değeri AsInvorker yazan yeri highestAvailable olarak ayarla bu kod uygulamanızı otomatik olarak üst düzey yetki ile başlatır. 2 - catch bloğunuzda hata alınıyorsa bir mesaj kutusu vb yöntemle görüntüleyin hataya göre işlem yapın. 3 - Silmeye çalıştığınız uygulama arka planda bir işlem tarafından kullanılıyor veya açık olabilir. 1 2 Quote Link to comment Share on other sites More sharing options...
relati7ity Posted April 21 Share Posted April 21 tahatas, 13 saat önce yazdı: Arkadaşlar C# form üzerinden basit bir uygulama yapıyorum. Bu uygulamada girilen dosya konumunu silmek istiyorum. File. Delete komutu ile dosyayı siliyorum. File. Exist kodu ile dosyanın olup olmadığını sorguluyorum ve try-catch kullanıyorum. Hiçbir hata almıyorum fakat dosya silinmiyor. File. Delete komutundan sonra file deleted yazıyorum fakat dosya silinmiyor. Ben kendim el ile silmek istediğimde bana emin misiniz diye soruyor. Anladığım kadarıyla bana soru sorduğu için C# file. Delete komutu ile silemiyor. Bu soruya C# ile nasıl otomatik evet diyebilirim? C# tan anlamam ama bize soru sorması nedeniyle silinemeyen regedit kaydını ( Yani komut istemiyle regedit silerken bize soru sormasını önlemek için sonuna /f koyuyoruz. Buna benzer bir şeye ihtiyacınız var gözüküyor. Eğer size soru sorduktan sonra evet deyince siliniyorsa. Sizin buna benzer bir koda ihtiyacınız var demektir. Quote Link to comment Share on other sites More sharing options...
shadesofdeath Posted April 21 Share Posted April 21 relati7ity, Bir saat önce yazdı: C# tan anlamam ama bize soru sorması nedeniyle silinemeyen regedit kaydını ( Yani komut istemiyle regedit silerken bize soru sormasını önlemek için sonuna /f koyuyoruz. Buna benzer bir şeye ihtiyacınız var gözüküyor. Eğer size soru sorduktan sonra evet deyince siliniyorsa. Sizin buna benzer bir koda ihtiyacınız var demektir. relati7ity, Bir saat önce yazdı: C# tan anlamam ama bize soru sorması nedeniyle silinemeyen regedit kaydını ( Yani komut istemiyle regedit silerken bize soru sormasını önlemek için sonuna /f koyuyoruz. Buna benzer bir şeye ihtiyacınız var gözüküyor. Eğer size soru sorduktan sonra evet deyince siliniyorsa. Sizin buna benzer bir koda ihtiyacınız var demektir. Komuta gerek yok c# da FileDelete komutu zaten direk kalıcı siler soru sormaz Quote Link to comment Share on other sites More sharing options...
tahatas Posted April 23 Author Share Posted April 23 shadesofdeath, 21.04.2024 - 14:20 yazdı: Komuta gerek yok c# da FileDelete komutu zaten direk kalıcı siler soru sormaz Soruyu C# sormuyor Windows soruyor. Mesela ben masaüstündeki bir dosyayı silerken Windows bana emin misin diye soruyor. İşte C# bu soruda takılıyor ve dosyayı silmiyor. Quote Link to comment Share on other sites More sharing options...
Editor pairs Posted April 29 Editor Share Posted April 29 UAC takılıyordur, programı yönetici çalıştırmaya zorlarsan takılmaz. Diğer türlü startup klasörüne bir bat yazabilirsin bir sonraki başlangıçta silecektir. Yada cmd ekranında del dosyaadi şeklinde denediğinde yetki istemiyorsa c# içinden cmd komut satırını çağırabilirsin. Aşağıdaki örnek referans olacaktır. // Silmek istediğiniz dosyanın yolunu belirtin string dosyaYolu = @"C:\example\file.txt"; // CMD'yi arka planda çalıştırmak için bir Process nesnesi oluşturun Process process = new Process(); process.StartInfo.FileName = "cmd.exe"; process.StartInfo.Arguments = $"/C del \"{dosyaYolu}\""; // /C parametresi CMD komutunu çalıştırır ve kapatır process.StartInfo.CreateNoWindow = true; // Konsol penceresini görünmez yapar process.Start(); // CMD komutunun tamamlanmasını bekleyin process.WaitForExit(); // İşlem sona erdiğinde bir mesaj yazdırın Console.WriteLine("Dosya silindi."); Quote Link to comment Share on other sites More sharing options...
shadesofdeath Posted April 29 Share Posted April 29 (edited) tahatas, 23.04.2024 - 10:46 yazdı: Soruyu C# sormuyor Windows soruyor. Mesela ben masaüstündeki bir dosyayı silerken Windows bana emin misin diye soruyor. İşte C# bu soruda takılıyor ve dosyayı silmiyor. FileDelete komutu dosyayı silemezse hataya düşer hataya düşmüyorsa kodlarınızda biryerde hata var demektir ya da catch hata ayıklamasını eksik yazıyorsunuz demektir çünkü sadece try kodu aktiftir catch ayarlamadıysa try kısmında hata oluşsa da dosya silienemedi hatasına düşmez. Diğer bir husus cmd üzerinden de silinmiyorsa MinSudo.exe uygulamasına cmd parametresi göndererek Trustedınstaller yetkisi ile sildirin. Hala yapamıyorsanız projeyi ve silmek istediğiniz dosya adını belirtin. Edited April 29 by shadesofdeath Quote Link to comment Share on other sites More sharing options...
mcmillian Posted August 11 Share Posted August 11 process.StartInfo.Arguments = $"/C del /Q \"{dosyaYolu}\""; ifadesiyle yer değiştiriniz. Aradaki fark del /Q olacaktır. using System; using System.Diagnostics; class Program { static void Main() { // Silmek istediğiniz dosyanın yolunu belirtin string dosyaYolu = @"C:\example\file.txt"; try { // CMD'yi arka planda çalıştırmak için bir Process nesnesi oluşturun using (Process process = new Process()) { process.StartInfo.FileName = "cmd.exe"; process.StartInfo.Arguments = $"/C del /Q \"{dosyaYolu}\""; // /Q parametresi onay penceresini bastırır process.StartInfo.CreateNoWindow = true; // Konsol penceresini görünmez yapar process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; // CMD'yi çalıştır process.Start(); // Çıkış mesajlarını al string output = process.StandardOutput.ReadToEnd(); string error = process.StandardError.ReadToEnd(); // CMD komutunun tamamlanmasını bekleyin process.WaitForExit(); // Çıktıları kontrol et if (string.IsNullOrEmpty(error)) { Console.WriteLine("Dosya silindi."); } else { Console.WriteLine("Dosya silinemedi: " + error); } } } catch (Exception ex) { Console.WriteLine("Bir hata oluştu: " + ex.Message); } } } Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.