Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    [VB2008] Controllare se è presente SQLExpress

    Sto cercando una funzioni che mi controlli se nel pc è gia installato SQLExpress2005

    Questa funzione è perfetta su WIN7...ma va in errore su XP

    codice:
    Private Sub ControlloInstallazioneSQL()         
      Dim isInstalled As Boolean = False          
      Dim regSql As Microsoft.Win32.RegistryKey =   Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion")          
      If regSql.GetValue("CurrentVersion") IsNot Nothing Then             
      isInstalled = True             
      MsgBox("Installato")         
      Else             
      MsgBox("Non Installato")         
      End If      
    End Sub
    Avete un'altro metodo da propormi?

    Ciao e grazie
    i7 3770K --- Asus P8z77 --- 2x4Gb Corsair Vengeance 2133MHz--- Enermax NoiseTaker II 600w --- SSD: 128Gb Vertex 4 --- WD 1000Gb --- WD 2000Gb --- ASUS ATI5850 1Gb --- Case: Kandalf 25cm Fan --- Tastiera Logitech G15 --- Mouse Razer Copperhead

  2. #2
    "va in errore" in che senso?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Originariamente inviato da MItaly
    "va in errore" in che senso?


    Uploaded with ImageShack.us
    i7 3770K --- Asus P8z77 --- 2x4Gb Corsair Vengeance 2133MHz--- Enermax NoiseTaker II 600w --- SSD: 128Gb Vertex 4 --- WD 1000Gb --- WD 2000Gb --- ASUS ATI5850 1Gb --- Case: Kandalf 25cm Fan --- Tastiera Logitech G15 --- Mouse Razer Copperhead

  4. #4
    Non c'entra XP in particolare... il problema è che tu controlli se esiste il valore "CurrentVersion", ma non verifichi se la sua chiave (la "cartella" in cui è contenuto) esiste, da cui la NullReferenceException; fai:
    codice:
    Dim isInstalled As Boolean = False          
    Dim regSql As Microsoft.Win32.RegistryKey =   Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion")          
    isInstalled = (regSql IsNot Nothing) AndAlso (regSql.GetValue("CurrentVersion") IsNot Nothing)
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5

    ok

    Originariamente inviato da MItaly
    Non c'entra XP in particolare... il problema è che tu controlli se esiste il valore "CurrentVersion", ma non verifichi se la sua chiave (la "cartella" in cui è contenuto) esiste, da cui la NullReferenceException; fai:
    codice:
    Dim isInstalled As Boolean = False          
    Dim regSql As Microsoft.Win32.RegistryKey =   Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion")          
    isInstalled = (regSql IsNot Nothing) AndAlso (regSql.GetValue("CurrentVersion") IsNot Nothing)

    non ho capito come devo fare...
    anche cosi mi da errore...
    forse qualche errore nella lettura del registro....????
    i7 3770K --- Asus P8z77 --- 2x4Gb Corsair Vengeance 2133MHz--- Enermax NoiseTaker II 600w --- SSD: 128Gb Vertex 4 --- WD 1000Gb --- WD 2000Gb --- ASUS ATI5850 1Gb --- Case: Kandalf 25cm Fan --- Tastiera Logitech G15 --- Mouse Razer Copperhead

  6. #6

    Re: ok

    Originariamente inviato da marco.santilli
    non ho capito come devo fare...
    anche cosi mi da errore...
    Quale errore?
    Com'è il codice che usi adesso?
    Dovrebbe essere una cosa del tipo:
    codice:
    Private Sub ControlloInstallazioneSQL()         
        Dim isInstalled As Boolean = False          
        Dim regSql As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion")          
        isInstalled = (regSql IsNot Nothing) AndAlso (regSql.GetValue("CurrentVersion") IsNot Nothing)
        If isInstalled Then
            MsgBox("Installato")         
        Else             
            MsgBox("Non Installato")         
        End If      
    End Sub
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7

    ok

    Un passo avanti è stato fatto....adesso non da più errore....


    Però...

    Su WIN7 mi dice "INSTALLATO" ed è giusto
    Su XP mi dice "NON INSTALLATO", invece è installato...

    Altra precisazione, non so se ne tiene conto, su XP ho sqlexpres 32 bit su WIN7 ho il 64 bit...

    Se hai altre hai altre idee...sono pronto a provarle...

    Ciao e grazie
    i7 3770K --- Asus P8z77 --- 2x4Gb Corsair Vengeance 2133MHz--- Enermax NoiseTaker II 600w --- SSD: 128Gb Vertex 4 --- WD 1000Gb --- WD 2000Gb --- ASUS ATI5850 1Gb --- Case: Kandalf 25cm Fan --- Tastiera Logitech G15 --- Mouse Razer Copperhead

  8. #8
    Ma sulla macchina XP andando con regedit sotto HKLM\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\Cu rrentVersion cosa trovi?
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9

    ok

    XP


    Uploaded with ImageShack.us


    WIN7


    Uploaded with ImageShack.us
    i7 3770K --- Asus P8z77 --- 2x4Gb Corsair Vengeance 2133MHz--- Enermax NoiseTaker II 600w --- SSD: 128Gb Vertex 4 --- WD 1000Gb --- WD 2000Gb --- ASUS ATI5850 1Gb --- Case: Kandalf 25cm Fan --- Tastiera Logitech G15 --- Mouse Razer Copperhead

  10. #10
    Il codice funziona correttamente, infatti sulla macchina XP la chiave che cerchi non c'è mica, dovresti trovare un'altra chiave che ti dica che MSSQL è installato... ma piuttosto, non è meglio cercare di collegarsi al DB locale e, se il collegamento fallisce, segnalare all'utente che non è stato trovato alcun DB server installato?
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.