Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Msconf87 - frmAbout.frm

frmAbout.frm

Caricato da: Natamas
Scarica il programma completo

  1. Option Explicit
  2.  
  3. ' Opzioni di protezione per la chiave del registro di configurazione
  4. Const READ_CONTROL = &H20000
  5. Const KEY_QUERY_VALUE = &H1
  6. Const KEY_SET_VALUE = &H2
  7. Const KEY_CREATE_SUB_KEY = &H4
  8. Const KEY_ENUMERATE_SUB_KEYS = &H8
  9. Const KEY_NOTIFY = &H10
  10. Const KEY_CREATE_LINK = &H20
  11. Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _
  12.                        KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _
  13.                        KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
  14.                      
  15. ' Chiavi principali del registro di configurazione
  16. Const HKEY_LOCAL_MACHINE = &H80000002
  17. Const ERROR_SUCCESS = 0
  18. Const REG_SZ = 1                         ' Stringa Unicode che termina con un carattere Null
  19. Const REG_DWORD = 4                      ' Numero a 32 bit
  20.  
  21. Const gREGKEYSYSINFOLOC = "SOFTWARE\Microsoft\Shared Tools Location"
  22. Const gREGVALSYSINFOLOC = "MSINFO"
  23. Const gREGKEYSYSINFO = "SOFTWARE\Microsoft\Shared Tools\MSINFO"
  24. Const gREGVALSYSINFO = "PATH"
  25.  
  26. Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
  27. Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long
  28. Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
  29.  
  30.  
  31. Private Sub cmdSysInfo_Click()
  32.   Call StartSysInfo
  33. End Sub
  34.  
  35. Private Sub cmdOK_Click()
  36.   Unload Me
  37. End Sub
  38.  
  39. Private Sub Form_Load()
  40.     Me.Caption = "Informazioni su " & App.Title
  41.     lblVersion.Caption = "Versione " & App.Major & "." & App.Minor & "." & App.Revision
  42.     lblTitle.Caption = App.Title
  43.     lblDescription.Caption = "Software realizzato da Natamas." & Chr(13) & "Disattiva i programmi che si eseguono automaticamente all'avvio di windows."
  44. End Sub
  45.  
  46. Public Sub StartSysInfo()
  47.     On Error GoTo SysInfoErr
  48.  
  49.     Dim rc As Long
  50.     Dim SysInfoPath As String
  51.    
  52.     ' Tenta di recuperare dal registro di configurazione il percorso e il nome
  53.     ' del programma che consente di visualizzare le informazioni sul sistema
  54.     If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath) Then
  55.     ' Tenta di recuperare dal registro di configurazione solo il percorso
  56.     ' del programma che consente di visualizzare le informazioni sul sistema
  57.     ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath) Then
  58.         ' Convalida l'esistenza di una versione a 32 bit del file conosciuta
  59.         If (dir(SysInfoPath & "\MSINFO32.EXE") <> "") Then
  60.             SysInfoPath = SysInfoPath & "\MSINFO32.EXE"
  61.            
  62.         ' Errore. Il file non è stato trovato.
  63.         Else
  64.             GoTo SysInfoErr
  65.         End If
  66.     ' Errore. La chiave del registro di configurazione non è stata trovata.
  67.     Else
  68.         GoTo SysInfoErr
  69.     End If
  70.    
  71.     Call Shell(SysInfoPath, vbNormalFocus)
  72.    
  73.     Exit Sub
  74. SysInfoErr:
  75.     MsgBox "Le informazioni sul sistema non sono attualmente disponibili.", vbOKOnly
  76. End Sub
  77.  
  78. Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean
  79.     Dim i As Long                                           ' Contatore per il ciclo
  80.     Dim rc As Long                                          ' Codice restituito
  81.     Dim hKey As Long                                        ' Handle a una chiave del registro di configurazione aperta
  82.     Dim hDepth As Long                                      '
  83.     Dim KeyValType As Long                                  ' Tipo di dati di una chiave del registro di configurazione
  84.     Dim tmpVal As String                                    ' Posizione di memorizzazione temporanea del valore di una chiave del registro di configurazione
  85.     Dim KeyValSize As Long                                  ' Dimensioni della variabile della chiave del registro di configurazione
  86.     '------------------------------------------------------------
  87.     ' Apre una chiave del registro di configurazione in una chiave principale {HKEY_LOCAL_MACHINE...}
  88.     '------------------------------------------------------------
  89.     rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey) ' Apre la chiave del registro di configurazione
  90.    
  91.     If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError          ' Gestione degli errori
  92.    
  93.     tmpVal = String$(1024, 0)                             ' Assegna spazio alla variabile
  94.     KeyValSize = 1024                                       ' Specifica le dimensioni della variabile
  95.    
  96.     '------------------------------------------------------------
  97.     ' Recupera il valore della chiave del registro di configurazione
  98.     '------------------------------------------------------------
  99.     rc = RegQueryValueEx(hKey, SubKeyRef, 0, _
  100.                          KeyValType, tmpVal, KeyValSize)    ' Recupera/crea il valore della chiave
  101.                        
  102.     If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError          ' Gestione degli errori
  103.    
  104.     If (Asc(Mid(tmpVal, KeyValSize, 1)) = 0) Then           ' In Win95 viene aggiunta una stringa che termina con un carattere Null
  105.         tmpVal = Left(tmpVal, KeyValSize - 1)               ' È stato trovato un carattere Null, che viene estratto dalla stringa
  106.     Else                                                    ' In WinNT non viene aggiunto un carattere Null al termine della stringa
  107.         tmpVal = Left(tmpVal, KeyValSize)                   ' Non è stato trovato nessun carattere Null, pertanto estrae solo la stringa
  108.     End If
  109.     '------------------------------------------------------------
  110.     ' Determina il tipo del valore della chiave per la conversione
  111.     '------------------------------------------------------------
  112.     Select Case KeyValType                                  ' Cerca i tipi di dati
  113.     Case REG_SZ                                             ' Tipo di dati String per la chiave del registro di configurazione
  114.         KeyVal = tmpVal                                     ' Copia il valore String
  115.     Case REG_DWORD                                          ' Tipo di dati Double Word per la chiave del registro di configurazione
  116.         For i = Len(tmpVal) To 1 Step -1                    ' Converte ogni bit
  117.             KeyVal = KeyVal + Hex(Asc(Mid(tmpVal, i, 1)))   ' Crea il valore carattere per carattere
  118.         Next
  119.         KeyVal = Format$("&h" + KeyVal)                     ' Converte Double Word in String
  120.     End Select
  121.    
  122.     GetKeyValue = True                                      ' Restituisce un valore che indica che l'operazione è riuscita
  123.     rc = RegCloseKey(hKey)                                  ' Chiude la chiave del registro di configurazione
  124.     Exit Function                                           ' Esce dalla routine
  125.    
  126. GetKeyError:      ' Reimposta i dati se viene generato un errore
  127.     KeyVal = ""                                             ' Imposta su una stringa vuota il valore restituito
  128.     GetKeyValue = False                                     ' Restituisce un valore che indica che l'operazione non è riuscita
  129.     rc = RegCloseKey(hKey)                                  ' Chiude la chiave del registro di configurazione
  130. End Function