Merhaba arkadaşlar, Bugün sizlere bilgisayarınız da bir programın yüklü olup olmadığını yazılımsal olarak nasıl kontrol edebileceğinizi anlatacağım.
Mesela bir program yazdınız ve bu programın çalışması için bilgisayarınız da bir program yüklü olması gerekmektedir. Aşağıdaki kod ile bilgisayar denetim masasında program kaldır kısmında yer alan program listesindeki tüm programların isminde arama yapabileceksiniz.
Ben örnek olarak “Microsoft SQL Server” yüklü olup olmadığını kontrol ediyorum ve bunu konsol uygulaması ile yapıyorum. Burada sql server birden fazla sürümü olabileceğinden içerikteki isimlerde bu adın geçip geçmediğini aratıyor olacağım ve 2014, 2012, 2010 veya her hangi bir tool u yüklü ise bana bununla ilgili uyarı verecektir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
class Program { static void Main(string[] args) { string programName = "Microsoft SQL Server"; bool st = CheckProgram(programName); if (st) Console.WriteLine(programName + " bilgisayarınızda kuruludur."); else Console.WriteLine(programName + " bilgisayarınızda kurulu değildir."); } public static bool CheckProgram(string ProgramName) { bool status = false; string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; using (RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key)) { foreach (string subkey_name in key.GetSubKeyNames()) { using (RegistryKey subkey = key.OpenSubKey(subkey_name)) { if (!string.IsNullOrEmpty(Convert.ToString(subkey.GetValue("DisplayName")))) { if (Convert.ToString(subkey.GetValue("DisplayName")).Contains(ProgramName)) status = true; } } } } return status; } } |
Burada isterseniz metodu alarak herhangi bir projede de kullanabilirsiniz.
çok perfect bir article olmuş 🙂
pekala istediğim programı nasıl kaldırabilirim
Windows Form Versiyonu varmıdır ?
Merhaba, Bu kodu rahatlıkla Windows Form da kullanabilirsin sadece aradaki farklılıkları değiştirmen gerekecektir. Mesela Console.WriteLine gibi MessageBox.show kullanırsın.
Merhabalar,
Bilmem belki onaylarmısınız ama kod bloğu tamamen gitmiş bende temize geçip kendim yazdım.
Aşağıya atıyorum konuyu ordan güncelliyebilirsiniz. Ek olarak aşağıda ki kodlar Windows Form çeşidine uygundur yani .NET mantığı ile yaptım.
Bu arada aşağıda atacağım kodlarda kendi düzenlemelerim oldu herhangi bir sorunda hata vermemesi için try-catch blokları ekledim.
İlk olarak global olarak aşağıdaki kodumuzu tanımlıyoruz:
public static bool CheckProgram(string ProgramName)
{
bool status = false;
string registry_key = @”SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall”;
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(registry_key))
{
try
{
foreach (string skName in rk.GetSubKeyNames())
{
using (RegistryKey sk = rk.OpenSubKey(skName))
{
if (!string.IsNullOrEmpty(Convert.ToString(sk.GetValue(“DisplayName”))))
{
if (Convert.ToString(sk.GetValue(“DisplayName”)).Contains(ProgramName))
status = true;
}
}
}
}
catch
{
}
return status;
}
}
Sonra herhangi bir butona veya formun load eventine aşağıdaki kodu yazıyor (ben 2 programı kontrol ettrdim isterseniz 1 e düşürebilirsiniz.)
string program1 = “Microsoft Access database engine 2010 (English)”;
string program2 = “Microsoft Office Access database engine 2007 (English)”;
bool st = CheckProgram(program1);
bool st2 = CheckProgram(program2);
if (st && st2 == true)
{
}
else
{
if(MessageBox.Show(“Programın çalışabilmesi için gerekli programlar kurulmamıştır lütfen gerekli programları kurunuz.”,”Bilgi Penceresi”,MessageBoxButtons.OK,MessageBoxIcon.Error)==DialogResult.OK)
{
programınÇalışabilmesiİçinLazımOlanProgramlarToolStripMenuItem.PerformClick();
}
}
Merhabalar, buradaki sorunun kullandığım code view componentinden kaynaklı olduğunu gördüm ve componen değiştirerek daha iyi çalışacak bir taneye geçtim. Benim ihtiyacım olan windows console uygulaması olduğu için ve ona uygun yazdığım için o şekilde paylaşmıştım. Net formatı paylaşımı için teşekkürler.