Gå til innhold

Lage ett lite program for meg (.net check)


Anbefalte innlegg

Lurer på det er noen snille sjeler her som hadde giddet å gjøre meg en liten tjeneste.

 

Jeg er en .NET programmerer (C#) og har desverre ikke Visual Basic 6.0 (ikke VB.NET) ellers kunne jeg helt sikkert gjort dette selv.

 

Det programmet skal gjøre er å sjekke om dot net framwork er installert på maskinen. (Sjekke om [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\v1.1] finnes i registry)

 

Visst .NET er installert vil jeg at programmet skal kjøre filen go.exe (som er ett .net prgram) som ligger i samme katalog, og visst ikke .net er installer vil jeg vise en feilmelding og forklare at dot net ikke er installert osv med en knapp der de kan trykke på som tar de til microsoft sine .net sider hvor de kan hente ned framwork for .net.

Lenke til kommentar
Videoannonse
Annonse

Muligens noe som følger?

 

Option Explicit

Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long             ' Need to open the key to be able to restore to it.
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Const SW_SHOWNORMAL = 1
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const KEY_NOTIFY = &H10

' URLer og register-nøkler
Private Const NetURL = "http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&displaylang=en"
Private Const NetRegistryKey = "SOFTWARE\Microsoft\.NETFramework\policy\v1.1"

Private Sub Form_Load()

Dim hKey As Long

If RegOpenKeyEx(HKEY_LOCAL_MACHINE, NetRegistryKey, 0&, KEY_NOTIFY, hKey) <> 0 Then

   ' Funksjonen mislykkes i åpningen av nøkkelen
   If MsgBox("Rammeverket NET.1.1 er ikke installert. Vil du installere det nå?", vbCritical + vbYesNo, "NET 1.1") = vbYes Then
           ' Hent fram siden hvor NET.1.1 kan lastes ned
           ShellExecute Me.hwnd, vbNullString, NetURL, vbNullString, "C:\", SW_SHOWNORMAL
   End If
   
Else
   
   ' Ingen feil - nøkkelen eksisterer
   Shell ValidPath(App.Path) & "go.exe"  ' Kjør programmet i samme katalog

End If

' Rydd opp
RegCloseKey hKey

End Sub

Public Function ValidPath(Path As String) As String

ValidPath = Path & IIf(Right(Path, 1) = "\", "", "\")

End Function

 

Eneste jeg oppdaget var at koden ikke registrerte NET når versjon 2.0 var installert, ettersom nøkkelen "v.1.1" da befant seg i "Standards" nøkkelen. Jeg tror derfor du heller bør endre NetRegistryKey til dette:

 

Private Const NetRegistryKey = "SOFTWARE\Microsoft\.NETFramework\policy"

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...