none
Bilgisayara Sql Yüklü mü Değil mi? Kontrol RRS feed

  • Soru

  • Programı setup yaparken bilgisayara sql express'in yüklü olup olmadığını

     string[] yuklusqller = (string[])Registry.LocalMachine.OpenSubKey("Software").OpenSubKey("Microsoft").OpenSubKey("Microsoft SQL Server").GetValue("InstalledInstances");
                var yukluozellikler = (from s in yuklusqller
    
                                       where s.Contains("SQLEXPRESS")
    
                                       select s).FirstOrDefault();
                if (yukluozellikler == null)


    Koduyla kontrol etmeye çalışıyorum, tabi kodu internette buldum ancan LocalMachine/Sofware/Microsoft/Microsoft Sql Server klasörüne gelince  InstalledInstances kısmında SQLEXPRESS i görebiliyorum, bilgisayarda sqlexpress kurulu ancak değer sürekli null dönüyor daha doğrusu

    var yukluozellikler = (from s in yuklusqller
    
                                       where s.Contains("SQLEXPRESS")
    
                                       select s).FirstOrDefault();

    şu kısımı işaretleyip değer boş olamaz gibi bir uyarı veriyor hata nerdedir? doğrusu nasıldır?

    Registry'de LocalMachine/Sofware/Microsoft/Microsoft Sql Server klasörünü kontrol edip değer alabiliyorum ancak sql server silinse bile registryde bu klasör kaldığı için sağlıklı olan InstalledInstances kontrolü sanırım, yada daha düzgün çalışan farklı bir yöntem varsa kod paylaşmanız münkün mü?

    ___________

    ayrıca şimdi regedit'in uninstall kısmına bakan bir kod yapısı daha buldum

    bool yukluozellikler = false;
                string uninstallKey = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
    
                using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))
                {
                    foreach (string skName in rk.GetSubKeyNames())
                    {
                        using (RegistryKey sk = rk.OpenSubKey(skName))
                        {
                            try
                            {
                                if (sk.GetValue("DisplayName").ToString() == "SQL Server 2017 Database Engine Services")
                                {
                                    yukluozellikler = true;
                                }
                            }
                            catch { }
                        }
                    }
                }
    sql server 2017 express'in gerekli yerine bakınca regeditte displayname olarak SQL Server 2017 Database Engine Services olarak görünmekte, bilgisayarıma da yüklü ama hala false değeri dönmekte bana ??
    • Düzenleyen CsharpAcemisi 11 Mart 2020 Çarşamba 12:08 Başka bir yöntem denemesi daha
    11 Mart 2020 Çarşamba 11:18

Yanıtlar

Tüm Yanıtlar